Workflow-Sqoop Action

本workflow位于oozie目录下新创建的一个oozie-apps文件夹下的sqoop文件夹中。

sqoop

1、job.properties

2、lib文件夹(其中包含了一个mysql的驱动包)

2、workflow.xml

将整个oozie-apps文件夹上传到hdfs的对应用户目录下

然后运行程序

bin/oozie job -config oozie-apps/sqoop/job.properties -run 

job.properties

nameNode=hdfs://127.0.0.1:9000
jobTracker=127.0.0.1:8032
queueName=default
oozieappsRoot=user/bpf/oozie-apps
DataRoot=user/bpf/oozie/datas

oozie.use.system.libpath=true

oozie.wf.application.path=${nameNode}/${oozieappsRoot}/sqoop/workflow.xml
outputDir=sqoop/output

workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.5" name="sqoop-wf">
    <start to="sqoop-node"/>

    <action name="sqoop-node">
        <sqoop xmlns="uri:oozie:sqoop-action:0.3">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
                <delete path="${nameNode}/${DataRoot}/${outputDir}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapreduce.job.queuename</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <command>import --connect jdbc:mysql://127.0.0.1:3306/bpf --username root --password 1234 --table user --target-dir ${nameNode}/${DataRoot}/${outputDir} --num-mappers 1</command>
        </sqoop>
        <ok to="end"/>
        <error to="fail"/>
    </action>

    <kill name="fail">
        <message>Sqoop failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>


**************************************************************************************
也可以编写一个脚本 如test.txt
--connect
jdbc:mysql://127.0.0.1:3306/bpf
--username
root
--password
1234
--table
user
--target-dir
${nameNode}/${DataRoot}/${outputDir}
--num-mappers
1
然后再workflow的command标签中使用
<command>import --options-file test.txt</command>



发布了65 篇原创文章 · 获赞 14 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章