$ Hive源码分析
$ Jdbc
$ URL格式
JDBC URL (opens new window)的格式(其中每个list部分都是分号分隔的键值对):
jdbc:hive2://<host1>:<port1>,<host2>:<port2>/dbName;initFile=<file>;sess_var_list?hive_conf_list#hive_var_list
URL解析的代码在:org.apache.hive.jdbc.Utils.extractURLComponents(String uri, Properties info) (opens new window),主要流程如下:
- 解析Authority部分,即
Host:Port
列表(当动态服务发现的时候支持多个)。 - 从URL的Path部分(“/”后,“?”前)解析db名和SessionVars的键值对。
- 从URL的Query部分(“?”后,“#”前)解析HiveConfs的键值对。
- 从URL的Fragment部分(“#”后)解析HiveVars的键值对。
- 从info的键值对中按前缀"hiveconf:"或"hivevar:"分别覆盖HiveConfs和HiveVars对应的值。
- 如果SessionVars中没有"user",则从info中取"user","password"键值对覆盖。
- 从info的键值对取"auth"覆盖SessionVars中的值。
sess_var_list主要是JDBC客户端的参数,hive_conf_list和hive_var_list主要是服务端的参数,会随着OpenSession请求发送到服务端。info Properties可以覆盖URL中的hive_conf_list和hive_var_list,以及sess_var_list中的"user","password","auth"等认证相关参数。
$ 参考
← Beeline命令行 HiveQL →