爲此,您可以使用Oozie shell action
。基本上你需要創建一個shell行動&提供您在您的問題張貼的命令在操作中要執行的命令
樣品Oozie的動作:
<action name="SqoopAction">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>[JOB-TRACKER]</job-tracker>
<name-node>[NAME-NODE]</name-node>
<prepare>
<delete path="[PATH]"/>
...
<mkdir path="[PATH]"/>
...
</prepare>
<job-xml>[SHELL SETTINGS FILE]</job-xml>
<configuration>
<property>
<name>[PROPERTY-NAME]</name>
<value>[PROPERTY-VALUE]</value>
</property>
...
</configuration>
<exec>[SHELL-COMMAND]</exec>
<argument>[ARG-VALUE]</argument>
...
<argument>[ARG-VALUE]</argument>
<env-var>[VAR1=VALUE1]</env-var>
...
<env-var>[VARN=VALUEN]</env-var>
<file>[FILE-PATH]</file>
...
<archive>[FILE-PATH]</archive>
...
<capture-output/>
</shell>
在你的情況,你將取代[SHELL-COMMAND]
與任何Sqoop命令要運行,如:
<exec>sqoop export --connect jdbc:mysql://localhost/hduser --table foo1 -m 1 --export-dir /user/cloudera/bar1</exec>
另外,你可以把你的所有sqoop命令在shell腳本,並執行該腳本來代替。如果你有很多要執行的命令,這會更好。
嗨,非常感謝。我如何執行workflow.xml?我在哪裏放置workflow.xml文件?我在哪裏定義「$ {jobTracker}」的參數?我是Oozie的新手,我們會很樂意爲您提供幫助。 – Rio
jobTracker和nameNode在這裏是參數化的,這意味着它應該在job.properties文件中定義。似乎你還沒有通過這些例子。檢查apache oozie網站。他們提供了很好的例子。鏈接在這裏。 [https://oozie.apache.org/docs/3.3.2/DG_Examples.html](https://oozie.apache.org/docs/3.3.2/DG_Examples.html) – DMA
好的謝謝。我的Hadoop版本是:Hadoop 2.0.0-cdh4.3.1。我可以在oozie中使用此版本的Hadoop中的sqoop動作嗎? – Rio