如何通过 hive2 oozie 操作连接到配置单元服务器 2?
How to connect to hive server 2 through hive2 oozie action?
我无法通过 oozie 的 Hive2 操作连接到 Hive。 jdbcUrl 启用了 zooKeeper 服务发现。我的数据平台是 Hortonworks 2.6.
最初我试图通过 python 脚本连接到 beelne,并且该脚本由 oozie 的 shell 操作执行。但是无法做到。所以我尝试改用 hive2 操作。但即使这样也行不通。直线的 jdbcURL 没有 SSL。它启用了 zooKeeper 服务发现。
<workflow-app xmlns="uri:oozie:workflow:0.3" name="hive2-wf">
<start to="hive2-node"/>
<action name="hive2-node">
<hive2 xmlns="uri:oozie:hive2-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<jdbc-url>${jdbcURL}</jdbc-url>
<script>table_create.hql</script>
</hive2>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Hive2 (Beeline) action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
我遇到的错误是“org.apache.hive.jdbc.HiveConnection:打开会话时出错”。
我尝试了以下属性。但它仍然不起作用:
oozie.use.system.libpath=真
oozie.libpath=hdfs://host:8020/user/oozie/share/lib/lib_20180801150051 oozie.wf.application.path=hdfs://host/user/pid/hive2
SHARELIB 行动路径#
oozie.action.sharelib.for.hive=配置单元、hcatalog、sqoop
jdbcURL=jdbc:hive2://host:2181(zookeeper quorum) /;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 hive_query=table_creation.hql
我还注意到一件事。但是不知道我正在使用的 is.The JDBC url 具有三个不同的 zookeeper quorom 有多重要:
jdbcURL= jdbc:hive2://host1:2181,host2:2181,host3:2181/ ;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
但是当我 运行 oozie 工作流时,它使用不同的端口:
连接到 jdbc:hive2://host1:2181,host2:2181,host3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
错误:无法与 jdbc:hive2://host1:10001/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 建立连接:HTTP 响应代码:401(状态=08S01,代码=0)
我们需要更多信息。你能分享oozie属性文件吗?
也许你需要的是定义 oozie.action.sharelib.for.hive,像
oozie.action.sharelib.for.hive=配置单元,目录。
你试过了吗?还要确保你在相应的 sharelib 中有 hive-site.xml,或者你甚至可以尝试将它保存在与你将工作流 xml 放在 hdfs 位置内的相同的 forder 中。请参阅下面的示例
nameNode=hdfs://sandbox.hortonworks.com:8020
jobTracker=sandbox.hortonworks.com:8050
queueName=defaultappPath=${nameNode}/<HDFS_path_where_workflow.xml_file>
oozie.use.system.libpath=true
oozie.libpath=${nameNode}/user/oozie/share/lib/lib_20161025075203/
oozie.wf.application.path=${appPath}
#SHARELIB PATH FOR ACTION#
oozie.action.sharelib.for.hive=hive,hcatalog,sqoop
它通过在 Hive 凭据中提供 jdbcURL 和 jdbcPrincipal 并将这些凭据传递给 hive2 操作来工作
我无法通过 oozie 的 Hive2 操作连接到 Hive。 jdbcUrl 启用了 zooKeeper 服务发现。我的数据平台是 Hortonworks 2.6.
最初我试图通过 python 脚本连接到 beelne,并且该脚本由 oozie 的 shell 操作执行。但是无法做到。所以我尝试改用 hive2 操作。但即使这样也行不通。直线的 jdbcURL 没有 SSL。它启用了 zooKeeper 服务发现。
<workflow-app xmlns="uri:oozie:workflow:0.3" name="hive2-wf">
<start to="hive2-node"/>
<action name="hive2-node">
<hive2 xmlns="uri:oozie:hive2-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<jdbc-url>${jdbcURL}</jdbc-url>
<script>table_create.hql</script>
</hive2>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Hive2 (Beeline) action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
我遇到的错误是“org.apache.hive.jdbc.HiveConnection:打开会话时出错”。
我尝试了以下属性。但它仍然不起作用: oozie.use.system.libpath=真 oozie.libpath=hdfs://host:8020/user/oozie/share/lib/lib_20180801150051 oozie.wf.application.path=hdfs://host/user/pid/hive2
SHARELIB 行动路径#
oozie.action.sharelib.for.hive=配置单元、hcatalog、sqoop jdbcURL=jdbc:hive2://host:2181(zookeeper quorum) /;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 hive_query=table_creation.hql
我还注意到一件事。但是不知道我正在使用的 is.The JDBC url 具有三个不同的 zookeeper quorom 有多重要: jdbcURL= jdbc:hive2://host1:2181,host2:2181,host3:2181/ ;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
但是当我 运行 oozie 工作流时,它使用不同的端口: 连接到 jdbc:hive2://host1:2181,host2:2181,host3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 错误:无法与 jdbc:hive2://host1:10001/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 建立连接:HTTP 响应代码:401(状态=08S01,代码=0)
我们需要更多信息。你能分享oozie属性文件吗? 也许你需要的是定义 oozie.action.sharelib.for.hive,像 oozie.action.sharelib.for.hive=配置单元,目录。 你试过了吗?还要确保你在相应的 sharelib 中有 hive-site.xml,或者你甚至可以尝试将它保存在与你将工作流 xml 放在 hdfs 位置内的相同的 forder 中。请参阅下面的示例
nameNode=hdfs://sandbox.hortonworks.com:8020
jobTracker=sandbox.hortonworks.com:8050
queueName=defaultappPath=${nameNode}/<HDFS_path_where_workflow.xml_file>
oozie.use.system.libpath=true
oozie.libpath=${nameNode}/user/oozie/share/lib/lib_20161025075203/
oozie.wf.application.path=${appPath}
#SHARELIB PATH FOR ACTION#
oozie.action.sharelib.for.hive=hive,hcatalog,sqoop
它通过在 Hive 凭据中提供 jdbcURL 和 jdbcPrincipal 并将这些凭据传递给 hive2 操作来工作