【问题标题】:How to connect to hive server 2 through hive2 oozie action?如何通过 hive2 oozie action 连接到 hive server 2?
【发布时间】:2020-03-02 15:20:18
【问题描述】:

我无法通过 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: Error opening session”。

我尝试了以下属性。但它仍然无法正常工作: oozie.use.system.libpath=true oozie.libpath= hdfs://host:8020/user/oozie/share/lib/lib_20180801150051 oozie.wf.application.path=hdfs://host/user/pid/hive2

操作的共享路径#

oozie.action.sharelib.for.hive=hive,hcatalog,sqoop jdbcURL=jdbc:hive2://host:2181(zookeeper quorum) /;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 hive_query=table_creation.hql

我还注意到一件事。但不知道它有多相关。我使用的 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)

【问题讨论】:

    标签: apache-zookeeper oozie hortonworks-data-platform beeline


    【解决方案1】:

    我们需要更多信息。你能分享 oozie 属性文件吗? 也许您需要定义 oozie.action.sharelib.for.hive,例如 oozie.action.sharelib.for.hive=hive,hcatalog。 你试过吗?还要确保您在相应的 sharelib 中有 hive-site.xml,或者您甚至可以尝试将其保存在您将工作流 xml 放置在 hdfs 位置内的同一个文件夹中。请参阅下面的示例

    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
    

    【讨论】:

      【解决方案2】:

      它通过在 Hive 凭据中提供 jdbcURL 和 jdbcPrincipal 并将这些凭据传递给 hive2 操作来工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        相关资源
        最近更新 更多