HiveQL 连接
HiveQL的Join子句用于基于相关列来合并两个或多个表的数据。HiveQL的各种类型的Join包括: –
- 内连接
- 左外连接
- 右外连接
- 全外连接
在这里,我们将在以下表的记录上执行Join子句:
HiveQL中的内连接
HiveQL中的内连接用于返回满足连接条件的多个表的行。换句话说,连接条件在每个被连接的表中找到匹配的记录。
在Hive中的内连接示例
在这个示例中,我们使用两个表employee和employee_department。employee表的主键(empid)表示employee_department表的外键(depid)。让我们通过以下步骤执行内连接操作:
- 选择我们想要创建表的数据库。
hive> use hiveql;
- 现在,通过使用以下命令创建一个表格:
hive> create table employee(empid int, empname string , state string)
row format delimited
fields terminated by ',' ;
- 将对应的数据加载到表中。
hive> load data local inpath '/home/codegyani/hive/employee' into table employee;
- 现在,使用以下命令创建另一个表:
hive> create table employee_department(depid int, department_name string)
row format delimited
fields terminated by ',' ;
- 将相应的数据加载到表格中.
hive> load data local inpath '/home/codegyani/hive/employee_department' into table employee_department;
- 现在,使用以下命令执行内连接操作:-
hive>select e1.empname, e2.department_name from employee e1 join employee_department e2 on e1.empid= e2.depid;
HiveQL中的左外连接
HiveQL的左外连接返回左侧(第一个)表中的所有记录,并且只返回右侧(第二个)表中符合连接条件的记录。
在Hive中使用左外连接的示例
在这个示例中,我们执行左外连接操作。
- 让我们通过使用以下命令来执行左外连接操作:
hive> select e1.empname, e2.department_name from employee e1 left outer join employee_department e2 on e1.empid= e2.depid;
HiveQL中的右外连接
HiveQL中的右外连接返回来自右边(第二个)表的所有记录,并且只返回与连接条件匹配的左边(第一个)表的记录。
在Hive中左外连接的示例
在这个示例中,我们执行左外连接操作。
- 让我们通过使用以下命令执行左外连接操作:
hive> select e1.empname, e2.department_name from employee e1 right outer join employee_department e2 on e1.empid= e2.depid;
完全外连接
HiveQL的完全外连接返回两个表的所有记录。对于任一表中缺失的记录,它将赋值为Null。
Hive中全外连接的示例
在这个示例中,我们执行全外连接操作。
- 让我们使用以下命令执行全外连接操作:-
select e1.empname, e2.department_name from employee e1 full outer join employee_department e2 on e1.empid= e2.depid;