在github 上上可以使用 Python client 驱动程序。有关安装说明,请参阅设置 HiveServer2:Python Client 驱动程序。
一个 Ruby client 驱动程序在https://github.com/forward3d/rbhive的 github 上可用。
Name: Hive
Example URL: jdbc:hive2://localhost:10000/default
HIVE_HOME/lib/hive-jdbc-*-standalone.jar
HADOOP_HOME/share/hadoop/common/hadoop-common-*.jar
版本信息
Hive JDBC 独立 jars 用于 Hive 0.14.0 向前(HIVE-538);对于以前版本的 Hive,请改用HIVE_HOME/build/dist/lib/.jar。
hadoop-common jars 适用于 Hadoop 2.0;对于以前版本的 Hadoop,请改用HADOOP_HOME/hadoop--core.jar。
org.apache.hive.jdbc.HiveDriver
建立连接后,您将在 log console 中看到错误,并可能会收到驱动程序与 JDBC 3.0 兼容的警告。这些警报是由 JDBC 元数据 API 的 yet-to-be-implemented 部分引起的,可以安全地忽略。要测试连接,请在 console 中输入 SHOW TABLES,然后单击 run 图标。
另请注意,当查询为 running 时,对“取消”按钮的支持尚不可用。
使用 JDBC 连接可以使用 Oracle SQLDeveloper 集成。
https://community.hortonworks.com/articles/1887/connect-oracle-sql-developer-to-hive.html
Version 1.2.0 以及之后
此选项从Hive 1.2.0开始可用。
HIVE-9709引入了对 JDBC 驱动程序的支持,以启用 cookie 重放。默认情况下会启用此功能,以便将传入的 cookies 发送回服务器进行身份验证。
启用时的 JDBC 连接 URL 应如下所示:
jdbc:hive2://<host>:<port>/<db>?transportMode=http;httpPath=<http_endpoint>;cookieAuth=true;cookieName=<cookie_name>
Version 1.2.0 以及之后
此选项从Hive 1.2.0开始可用。
HIVE-10447使 JDBC 驱动程序在 HTTP 模式下支持 2-way SSL。请注意,HiveServer2 目前不支持 2-way SSL。因此,当有一个像 Knox 这样的中间服务器需要 client 来支持 2-way SSL 时,这个 feature 很方便。
JDBC 连接 URL:
jdbc:hive2://<host>:<port>/<db>;ssl=true;twoWay=true; sslTrustStore=<trust_store_path>;trustStorePassword=<trust_store_password>;sslKeyStore=<key_store_path>;keyStorePassword=<key_store_password> ?transportMode=http;httpPath=<http_endpoint>
对于早于 0.14 的版本,请参阅上面的version 注意。
Version 1.2.0 以及之后
此选项从Hive 1.2.0开始可用。
HIVE-10339为 clients 引入了一个选项,以提供可以发送到底层服务器的自定义 HTTP headers(Hive 1.2.0 及更高版本)。
JDBC 连接 URL:
jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>;http.header.<name1>=<value1>;http.header.<name2>=<value2>
指定上述 URL 后,Beeline 将调用基础请求以将 HTTP 标头集添加到和,将另一个 HTTP 标头集设置为和。当最终用户需要将 HTTP 标头中的标识向下发送到中间服务器(如 Knox,通过 Beeline 进行身份验证)时,这非常有用,例如
http.header.USERNAME=<value1>;http.header.PASSWORD=<value2>。
对于早于 0.14 的版本,请参阅上面的version 注意。
在 Hive version 3.0.0 HIVE-18447中为 clients 引入了一个选项,以提供可以发送到底层服务器的自定义 HTTP cookies。某些身份验证机制(如 Single Sign On)需要能够通过 JDBC 驱动程序将 cookie 传递给某些中间身份验证服务(如 Knox)。
JDBC 连接 URL:
jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>;http.cookie.<name1>=<value1>;http.cookie.<name2>=<value2>
指定上述 URL 后,Beeline 将调用基础请求以在请求标头中添加 HTTP cookie,并将其设置为 = 和 = 。
Hive 用于批处理和交互式查询。变量替换允许执行诸如从 code 中分离 environment-specific configuration 变量的任务。
Hive 变量替换机制旨在避免在 Hive 之上加入脚本语言的某些 code。
诸如以下 shell 命令之类的示例可能(效率低下)用于在脚本中设置变量:
$ a=b
$ hive -e " describe $a "
这很令人沮丧,因为 Hive 与脚本语言紧密结合。当进行数千次操作(例如多次hive -e调用)时,几秒钟的 Hive 启动 time 是 non-trivial。
Hive 变量将您熟悉和喜爱的设定能力与一些有限但强大的替代能力相结合。
以下示例:
$ bin/hive --hiveconf a=b -e 'set a; set hiveconf:a; \
create table if not exists b (col int); describe ${hiveconf:a}'
结果是:
Hive history file=/tmp/edward/hive_job_log_edward_201011240906_1463048967.txt
a=b
hiveconf:a=b
OK
Time taken: 5.913 seconds
OK
col int
Time taken: 0.754 seconds
有关 Hive 命令 line 选项的一般信息,请参阅Hive CLI。
版本信息
在 version 0.7.0(JIRA HIVE-1096)中添加了hiveconf选项。 Version 0.8.0 添加了选项define和hivevar(JIRA HIVE-2020),它们是等价的,在此不再赘述。它们在命名空间中创建自定义变量,该命名空间与 hiveconf,system 和 env 命名空间分开。
使用变量
变量有三个命名空间 - hiveconf,system 和 env。 (自定义变量也可以在 Hive 0.8.0 中使用define或hivevar选项的单独命名空间中创建,以后 releases.)
hiveconf 变量设置为正常:
set x=myvalue
但是,使用以下方法检索它
${hiveconf:x}
从测试用例 ql/src/test/queries/clientpositive/setprocessornamespaces.q 中使用的带注释的示例:
set zzz=5;
-- sets zzz=5
set zzz;
set system:xxx=5;
set system:xxx;
-- sets a system property xxx to 5
set system:yyy=${system:xxx};
set system:yyy;
-- sets yyy with value of xxx
set go=${hiveconf:zzz};
set go;
-- sets go base on value on zzz
set hive.variable.substitute=false;
set raw=${hiveconf:zzz};
set raw;
-- disable substitution set a value to the literal
set hive.variable.substitute=true;
EXPLAIN SELECT * FROM src where key=${hiveconf:zzz};
SELECT * FROM src where key=${hiveconf:zzz};
--use a variable in a query
set a=1;
set b=a;
set c=${hiveconf:${hiveconf:b}};
set c;
--uses nested variables.
set jar=../lib/derby.jar;
add file ${hiveconf:jar};
list file;
delete file ${hiveconf:jar};
list file;
当使用变量构造查询时,Hive 将 value 替换为变量。
默认情况下,变量替换处于启用状态(hive.variable.substitute =true)。如果这导致现有脚本出现问题,请使用以下命令将其禁用:
set hive.variable.substitute=false;
HCatalog 命令 line 接口(CLI)可以作为HIVE_HOME= hive_home hcat_home /bin/hcat调用,其中 hive_home 是已安装 Hive 的目录,hcat_home 是已安装 HCatalog 的目录。
如果您正在使用 BigTop 的 rpms 或 debs,则可以通过执行/usr/bin/hcat来调用 CLI。
HCatalog CLI 支持以下命令 line 选项:
选项 | 用法 | 描述 |
---|---|---|
-g | hcat -g mygroup … | 告诉 HCatalog 需要创建的 table 必须有 group“mygroup”。 |
-p | hcat -p rwxr-xr-x … | 告诉 HCatalog 需要创建的 table 必须具有权限“rwxr-xr-x”。 |
-f | hcat -f myscript.hcatalog … | 告诉 HCatalog myscript.hcatalog 是一个包含要执行的 DDL 命令的文件。 |
-e | hcat -e ‘create table mytable(a int);’ … | 告诉 HCatalog 将以下 string 视为 DDL 命令并执行它。 |
-D | hcat -D key = value … | 将 key-value 对作为 Java System Property 传递给 HCatalog。 |
请注意以下事项:
如果未提供选项,则会打印一条用法消息:
Usage: hcat { -e "" | -f <filepath> } [-g <group>] [-p <perms>] [-D<name>=<value>]
使用 HCatalog CLI 时,如果没有对所有者的读取权限(例如-wxrwxr-x),则无法指定权限 string,因为 string 以“-”开头。如果需要这样的权限设置,您可以使用八进制 version,在这种情况下将是 375.此外,所有者具有读取权限(对于 example r-x-----或r–r–r–)的任何其他类型的权限 string 将正常工作。
许多hcat命令可以作为hive命令发出,包括所有 HCatalog DDL 命令。 Hive CLI 包含一些 HCatalog CLI 中不可用的命令。请注意这些差异: