Sqoop - 使用 Oozie 导入 Hive 失败

Posted

技术标签:

【中文标题】Sqoop - 使用 Oozie 导入 Hive 失败【英文标题】:Sqoop - Hive import using Oozie failed 【发布时间】:2015-01-29 11:36:16 【问题描述】:

我正在尝试执行从 oracle 到 hive 的 sqoop 导入,但作业失败并出现错误

WARN [main] conf.HiveConf (HiveConf.java:initialize(2472)) - HiveConf of name hive.auto.convert.sortmerge.join.noconditionaltask does not exist 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

    我已准备好所有 jar 文件 hive-site.xml 也与 hive 元存储配置一起到位

<property> <name>hive.metastore.uris</name> <value>thrift://sv2lxgsed01.xxxx.com:9083</value> </property>

我能够成功地将 sqoop 导入(使用 oozie)运行到 HDFS。 我还能够成功执行配置单元脚本(使用 oozie) 我也可以从命令行执行 sqoop-hive 导入,但是一样 当我使用 oozie 执行命令时失败

我的workflow.xml如下


<workflow-app name="WorkflowWithSqoopAction" xmlns="uri:oozie:workflow:0.1"> <start to="sqoopAction"/> <action name="sqoopAction"> <sqoop xmlns="uri:oozie:sqoop-action:0.2"> <job-tracker>$jobTracker</job-tracker> <name-node>$nameNode</name-node> <command>import --connect jdbc:oracle:thin:@//sv2axcrmdbdi301.xxx.com:1521/DI3CRM --username xxxxxxx --password xxxxxx--table SIEBEL.S_ORG_EXT --hive-table eg.EQX_EG_CRM_S_ORG_EXT --hive-import -m1</command> <file>/user/oozie/oozieProject/workflowSqoopAction/hive-site.xml</file> </sqoop> <ok to="end"/> <error to="killJob"/> </action> <kill name="killJob"> <message>"Killed job due to error: $wf:errorMessage(wf:lastErrorNode())"</message> </kill> <end name="end" /> </workflow-app>

我还可以在 HDFS 中找到正在加载的数据。

【问题讨论】:

【参考方案1】:

你需要做两件事

1) 复制 oozie 工作流目录中的 hive-site.xml 2) 在您的 Hive 操作中告诉 oozie 使用我的 hive-site.xml

【讨论】:

感谢 Siva,问题在于 /user/oozie/share/lib 中缺少 jar

以上是关于Sqoop - 使用 Oozie 导入 Hive 失败的主要内容,如果未能解决你的问题,请参考以下文章

oozie sqoop 操作导入失败

利用oozie,执行sqoop action将DB2中的数据导入到hive分区表中

通过 oozie 从 sqoop 作业增量导入不会更新 sqoop 元存储中的 incremental.last.value

sqoop从hive导入数据到mysql时出现主键冲突

Oozie sqoop 任务错误:无法运行程序“hive”:错误=2 没有这样的文件或目录

CDH中oozie 定时调度sqoop job