oozie sqoop操作无法将数据导入配置单元

v1l68za4  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(461)

我在执行ooziesqoop操作时遇到问题。在日志中,我可以看到sqoop能够将数据导入temp目录,然后sqoop创建hive脚本来导入数据。
将临时数据导入配置单元时失败。
在日志中我没有得到任何例外。
下面是我正在使用的sqoop操作。

<workflow-app name="testSqoopLoadWorkflow" xmlns="uri:oozie:workflow:0.4">
<credentials>
    <credential name='hive_credentials' type='hcat'>
        <property>
            <name>hcat.metastore.uri</name>
            <value>${HIVE_THRIFT_URL}</value>
        </property>
        <property>
            <name>hcat.metastore.principal</name>
            <value>${KERBEROS_PRINCIPAL}</value>
        </property>
    </credential>
</credentials>
<start to="loadSqoopDataAction"/>
<action name="loadSqoopDataAction" cred="hive_credentials">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
             <job-xml>/tmp/hive-oozie-site.xml</job-xml>
        <configuration>
            <property>
                <name>oozie.hive.defaults</name>
                <value>/tmp/hive-oozie-site.xml</value>
            </property>
                  </configuration>
        <command>job --meta-connect ${SQOOP_METASTORE_URL} --exec TEST_SQOOP_LOAD_JOB</command>
    </sqoop>
    <ok to="end"/>
    <error to="kill"/>
</action>

下面是我用来导入数据的sqoop作业。

sqoop job --meta-connect ${SQOOP_METASTORE_URL} --create TEST_SQOOP_LOAD_JOB -- import --connect '${JDBC_URL}' --table testTable -m 1 --append --check-column pkId --incremental append --hive-import --hive-table testHiveTable;

在Map日志中,我得到以下异常。

72285 [main] INFO  org.apache.sqoop.hive.HiveImport  - Loading uploaded data into Hive
Intercepting System.exit(1)

<<< Invocation of Main class completed <<<

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]

Oozie Launcher failed, finishing Hadoop job gracefully

Oozie Launcher ends

请建议。

bwntbbo3

bwntbbo31#

@阿贝马斯-我想尝试使用你的解决方案。
只想检查一下下面的解决方案是否适合在一个oozie作业中导入sqoop+hive?
... ... ... /tmp/hive-site.xml#hive-site.xml。。。

1wnzp6jl

1wnzp6jl2#

若您使用的是cdh,那个么问题可能是由于配置单元元存储jar依赖冲突造成的。

bzzcjhmw

bzzcjhmw3#

这似乎是sqoop中的一个bug。我不确定吉拉的事。hortonworks提到,即使在HDP2.2版本中,这个问题仍然没有得到解决。

raogr8fs

raogr8fs4#

这看起来像是典型的sqoop导入到配置单元作业。所以看起来sqoop已经成功地在hdfs中导入了数据,并且无法将数据加载到hive中。
这里有一些关于发生了什么的背景。。。oozie启动一个单独的作业(将在hadoop集群中的任何节点上执行)来运行sqoop命令。sqoop命令启动一个单独的作业,将数据加载到hdfs中。然后,在sqoop作业结束时,sqoop运行一个配置单元脚本,将数据加载到配置单元中。
由于这在理论上是从hadoop集群中的任何节点上运行的,因此hivecli需要在每个节点上都可用,并与同一个metastore通信。配置单元元存储将需要在远程模式下运行。
最常见的问题是因为sqoop无法与正确的元存储对话。其主要原因通常是:
配置单元元存储服务未运行。它应该在远程模式下运行,并且应该启动一个单独的服务。下面是一个快速检查其是否正在运行的方法:
服务配置单元元存储状态 hive-site.xml 不包含 hive.metastore.uris . 下面是一个例子 hive-site.xmlhive.metastore.uris 设置:

<configuration>
...
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://sqoop2.example.com:9083</value>
  </property>
...
</configuration>
``` `hive-site.xml` 不包括在sqoop操作(或其属性)中。尝试将hive-site.xml添加到 `<file>` 元素。下面是一个示例workflow.xml `<file>` 其中:

相关问题