hive的连接方式(两种)

本文介绍两种连接Hive的方法:一是直接使用本地客户端通过命令行连接;二是通过Beeline连接远程HiveServer2。第一种方法适用于本地环境,第二种方法则适用于分布式环境中远程访问Hive的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种 本地客户端连接

[root@linux01 hive-2.3.1]# bin/hive

第二种:远程连接hiveserver2

先启动hiveserver2,再通过beeline连接

beeline 

beeline> !connect jdbc:hive2://linux01:10000
Connecting to jdbc:hive2://linux01:10000

Enter username for jdbc:hive2://linux01:10000: root
Enter password for jdbc:hive2://linux01:10000: root

Connected to: Apache Hive (version 2.3.1)
Driver: Hive JDBC (version 2.3.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://linux01:10000> 

或者

 beeline -u jdbc:hive2://localhost:10000 -n root
### Hive SQL 表连接类型及用法 #### 左外连接 (Left Outer Join) 左外连接返回左表中的所有记录以及右表中满足连接条件的记录;如果右表中不存在匹配,则结果集中相应的列为空。 ```sql SELECT e.empno, e.ename, d.dname FROM emp e LEFT OUTER JOIN dept d ON e.deptno = d.deptno; ``` 此查询将显示所有的员工信息,即使某些员工未分配到任何部门也会被列出,在这种情况下,`dname`字段将是NULL[^1]。 #### 右外连接 (Right Outer Join) 右外连接与左外连接相反,它返回右表中的所有记录以及左表中满足连接条件的记录;对于那些在左表找不到对应项的情况,其对应的列为NULL。 ```sql SELECT e.empno, e.ename, d.dname FROM emp e RIGHT OUTER JOIN dept d ON e.deptno = d.deptno; ``` 这会显示出所有部门的信息,并附带属于这些部门的员工详情。如果有部门没有任何成员,那么该部分的数据将会是空白[^2]。 #### 内部连接 (Inner Join) 内部连接仅当两表存在相同键值时才返回行。这意味着只有同时存在于两个表格里的项目才会出现在最终的结果集里。 ```sql SELECT e.empno, e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno; ``` 上述命令只会给出有明确所属关系(即有效部门编号)的雇员名单及其所在单位的名字[^3]。 #### 全外连接 (Full Outer Join) 全外连接会保留来自两侧输入的关系对象的所有原始数据,无论另一侧是否有相配的对象。然而需要注意的是,并不是所有的数据库都支持这个特性,而Hive确实提供了这样的功能。 ```sql SELECT COALESCE(e.empno,-99),COALESCE(e.ename,'None'),COALESCE(d.dname,'No Dept') as DepartmentName FROM emp e FULL OUTER JOIN dept d ON e.deptno=d.deptno; ``` 这里使用了 `COALESCE()` 函数来代替可能产生的 NULL 值,使得输出更加友好易读[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值