@羲凡——只为了更好的活着
Oozie调用hive案例——Oozie4.3.1
oozie调用hive准备三个文件 job.properties、script.q、workflow.xml
1.job.properties
# 当你配置了dfs高可用,fs.defaultFS参数对应的名字,
# 否者写hdfs://deptest1:8020或者hdfs://deptest1:9000
nameNode=hdfs://ns
# 当你配置的是高可用的yarn,yarn.resourcemanager.cluster-id参数对应的名字
# 否者写deptest2:8032
jobTracker=rmcluster
# 任务所用的队列,根据自己公司情况写,这里我选着默认
queueName=default
# examplesRoot这个名字最好不要改,有时会出错,切记!
examplesRoot=aarontest/oozie/hive
# oozie能使用hdfs上系统lib目录
oozie.use.system.libpath=true
script=${nameNode}/${examplesRoot}/script.q
oozie.wf.application.path=${nameNode}/${examplesRoot}/workflow.xml
outputpath=/aarontest/data/oozie/hive
2.script.q
# 查询一个表并写出到hdfs上OUTPUT文件夹下
INSERT OVERWRITE DIRECTORY '${OUTPUT}' SELECT * FROM aarontest.staff;
3.workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf">
<start to="hive-node"/>
<action name="hive-node">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<!-- 将hive的hive-site.xml文件上传到hdfs上让oozie任务能读取到 -->
<job-xml>${nameNode}/hive/hive-site.xml</job-xml>
<!--prepare>
<delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/hive"/>
<mkdir path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data"/>
</prepare-->
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
<!-- hive元数据的url -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://deptest20:9083</value>
</property>
</configuration>
<script>script.q</script>
<param>OUTPUT=${outputpath}</param>
</hive>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
4.提交
# 将文件上传到hdfs上(job.properties中examplesRoot的路径)
hdfs dfs -put hive/ aarontest/oozie/
# 启动oozie任务
oozie job -oozie http://deptest45:11000/oozie -config job.properties -run
-oozie 指定oozie地址
-config 指定任务的配置参数
====================================================================
@羲凡——只为了更好的活着
若对博客中有任何问题,欢迎留言交流