使用oozie

时间:2015-10-10 06:24:22

标签: oozie

当我使用下面的oozie详细信息提交sqoop作业时,我收到此错误。你能帮忙吗?

我的workflow.xml文件

<workflow-app xmlns="uri:oozie:workflow:0.4" name="oozie-wf">
<start to="sqoop-wf1"/>
<action name="sqoop-wf1">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<command>import --username hadoop --password bigdata --connect  
jdbc:db2://<host string>:50000/msrc --driver com.ibm.db2.jcc.DB2Driver --  
query  
'SELECT * FROM STUDENT.SALES WHERE (1=0 OR $CONDITIONS)' --target-dir  
/user/${wf:user()}/${examplesRoot}/apps/sqoop -m 1</command>
</sqoop>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed</message>
</kill>
<end name="end"/>
</workflow-app>

我的job.properties文件

nameNode=hdfs://sandbox.hortonworks.com:8020
jobTracker=sandbox.hortonworks.com:8050
queueName=default
examplesRoot=examples
oozie.use.system.libpath=true
oozie.libpath=/user/oozie/share/lib
oozie.wf.application.path=${nameNode}/user/root/${examplesRoot}/apps/sqoop
  
    
      

立即调用Sqoop命令行&gt;&gt;&gt;

    
  

3638 [main] WARN org.apache.sqoop.tool.SqoopTool - $ SQOOP_CONF_DIR尚未在环境中设置。无法检查其他配置。 2015-10-10 05:54:21,293 WARN [main] tool.SqoopTool(SqoopTool.java:loadPluginsFromConfDir(177)) - $ SQOOP_CONF_DIR尚未在环境中设置。无法检查其他配置。 4540 [main] INFO org.apache.sqoop.Sqoop - 运行Sqoop版本:1.4.6.2.3.0.0-2557 2015-10-10 05:54:22,195 INFO [main] sqoop.Sqoop(Sqoop.java:(92)) - 运行Sqoop版本:1.4.6.2.3.0.0-2557 5581 [main] WARN org.apache.sqoop.tool.BaseSqoopTool - 在命令行上设置密码是不安全的。考虑使用-P代替。 2015-10-10 05:54:23,236 WARN [main] tool.BaseSqoopTool(BaseSqoopTool.java:applyCredentialsOptions(1021)) - 在命令行上设置密码是不安全的。考虑使用-P代替。

公认的参数:15582 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 解析导入参数时出错: 2015-10-10 05:54:23,237 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(303)) - 解析导入参数时出错: 5582 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:* 2015-10-10 05:54:23,237 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:* 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:FROM 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:FROM 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:STUDENT.SALES 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:STUDENT.SALES 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:WHERE 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:WHERE 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:(1 = 0 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:(1 = 0 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:或者 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:或者 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:$ CONDITIONS)&#39; 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:$ CONDITIONS)&#39; 5583 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数: - target-dir 2015-10-10 05:54:23,238 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数: - target-dir 5584 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:/ user / root / examples / apps / sqoop 2015-10-10 05:54:23,239 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:/ user / root / examples / apps / sqoop 5584 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - 无法识别的参数:-m 2015-10-10 05:54:23,239 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:-m 5584 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Un 2015-10-10 05:54:23,239 ERROR [main] tool.BaseSqoopTool(BaseSqoopTool.java:hasUnrecognizedArgs(306)) - 无法识别的参数:1 拦截System.exit(1)

&LT;&LT;&LT;主类的调用已完成&lt;&lt;&lt;&lt;

Oozie Launcher失败,主要类[org.apache.oozie.action.hadoop.SqoopMain],退出代码[1]

Oozie Launcher失败了,优雅地完成了Hadoop工作

Oozie Launcher,将动作数据上传到HDFS序列文件:hdfs://sandbox.hortonworks.com:8020 / user / root / oozie-root / 0000035-151009124402969-oozie-root-W / sqoop-wf1 - sqoop /action-data.seq 2015-10-10 05:54:23,322 INFO [main] zlib.ZlibFactory(ZlibFactory.java:(49)) - 成功加载&amp;初始化的native-zlib库 2015-10-10 05:54:23,323 INFO [main] compress.CodecPool(CodecPool.java:getCompressor(153)) - 得到了全新的压缩器[.deflate]

Oozie Launcher结束

2015-10-10 05:54:23,346 INFO [main] mapred.Task(Task.java:done(1038)) - 任务:attempt_1444199299654_0255_m_000000_0完成。并且正在提交 2015-10-10 05:54:23,426 INFO [main] mapred.Task(Task.java:commit(1199)) - 允许任务尝试_1444199299654_0255_m_000000_0现在提交 2015-10-10 05:54:23,438 INFO [main] output.FileOutputCommitter(FileOutputCommitter.java:commitTask(482)) - 保存的任务输出&#39; attempt_1444199299654_0255_m_000000_0&#39;到hdfs://sandbox.hortonworks.com:8020 / user / root / oozie-root / 0000035-151009124402969-oozie-root-W / sqoop-wf1 - sqoop / output / _temporary / 1 / task_1444199299654_0255_m_000000 2015-10-10 05:54:23,509 INFO [main] mapred.Task(Task.java:sendDone(1158)) - 任务&#39; attempt_1444199299654_0255_m_000000_0&#39;完成。

2 个答案:

答案 0 :(得分:0)

当sqoop尝试使用Java解析整个命令时,它将使用如下所述的空格进行解析,您可以尝试如下所述,它可以正常工作。

试试这个,

<workflow-app xmlns="uri:oozie:workflow:0.4" name="oozie-wf">
<start to="sqoop-wf1"/>
<action name="sqoop-wf1">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<arg>import</arg>
<arg>--connect</arg>
<arg>jdbc:db2://<host string>:50000/msrc</arg>
<arg>--username</arg>
<arg>hadoop</arg>
<arg>--password</arg>
<arg>bigdata</arg>
<arg>--driver</arg>
<arg>com.ibm.db2.jcc.DB2Driver</arg>
<arg>--query</arg>
<arg>SELECT * FROM STUDENT.SALES WHERE (1=0 OR $CONDITIONS)</arg>
<arg>--target-dir</arg>
<arg>/user/${wf:user()}/${examplesRoot}/apps/sqoop</arg>
<arg>-m</arg>
<arg>1</arg>
</sqoop>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed</message>
</kill>
<end name="end"/>
</workflow-app>

答案 1 :(得分:-1)

使用命令元素时,Oozie会将每个空间上的命令拆分为多个参数。如果您使用的是简单的SQL查询但是如果您使用的话,则可以使用-arg。有多个连接的复杂查询,并且传递多个-ar的条件可能很乏味,在这种情况下,您应该创建sqoop作业并从oozie执行它们。

1.配置sqoop-site.xml以使用sqoop metastore更改以下属性

sqoop.metastore.client.autoconnect.url,sqoop.metastore.client.autoconnect.username,sqoop.metastore.client.enable.autoconnect,sqoop.metastore.client.autoconnect.password

https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_literal_sqoop_metastore_literal

2.启动sqoop Metastore

sqoop metastore & 

3.创建sqoop作业

sqoop job --create jobid -- import ...

3.使用

在oozie中提交sqoop作业
job --exec jobid --meta-connect sqoop-metastore-URL