• 1.17 shell action


    一、shell action

    1、

    ##job.properties
    nameNode=hdfs://hadoop-senior.ibeifeng.com:8020
    jobTracker=hadoop-senior.ibeifeng.com:8032
    queueName=default
    oozieAppsRoot=user/root/oozie-apps
    oozieDataRoot=user/root/oozie/datas
    
    oozie.wf.application.path=${nameNode}/${oozieAppsRoot}/shell-hive-select
    
    exec=student-select.sh
    script=student-select.sql
    
    
    
    ##workflow.xml
    <workflow-app xmlns="uri:oozie:workflow:0.5" name="shell-wf">
        <start to="shell-node"/>
        <action name="shell-node">
            <shell xmlns="uri:oozie:shell-action:0.2">
                <job-tracker>${jobTracker}</job-tracker>
                <name-node>${nameNode}</name-node>
                <configuration>
                    <property>
                        <name>mapred.job.queue.name</name>
                        <value>${queueName}</value>
                    </property>
                </configuration>
                <exec>${exec}</exec>
                <file>${nameNode}/${oozieAppsRoot}/shell-hive-select/${exec}#${exec}</file>
                <file>${nameNode}/${oozieAppsRoot}/shell-hive-select/${script}#${script}</file>
                <capture-output/>
            </shell>
            <ok to="end"/>
            <error to="fail"/>
        </action>
        <kill name="fail">
            <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>
        <end name="end"/>
    </workflow-app>
    
    
    
    ##student-select.sh
    #!/usr/bin/env bash
    
    ## student select
    /opt/cdh-5.3.6/hive-0.13.1-cdh5.3.6/bin/hive -f student-select.sql
    
    
    
    ##student-select.sql
    insert overwrite directory '/user/root/oozie/datas/shell-hive-select/output'
    select
     id, name
    from default.student ;


    prepare元素里面配置启动job前要删除或者创建的文件夹,文件夹路径必须是以hdfs://HOST:PORT开头。
    
    job-xml指定一个存在的配置文件。
    
    configuration里面配置传递给sqoop job的参数。
    
    exec元素包含要执行的shell命令的路径。可以给shell命令添加参数。
    
    argument元素指定要传递给shell脚本的参数。
    
    env-var包含传递给shell命令的环境变量。env-var只能包含一个环境变量和值。如果这个环境变量包含像$PATH一样的,那它必须写成PATH=$PATH:mypath。不能用${PATH},因为它将会被EL解析。
    
    capture-output元素指定用来捕获shell脚本的标准输出。可以通过String action:output(String node, String key)函数【EL函数】来获得输出。
    
    <file>属性会复制指定的文件到运行该脚本的机器上。


    2、运行

    ##
    [root@hadoop-senior oozie-apps]# /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put shell-hive-select/ /user/root/oozie-apps/
    
    
    ##
    [root@hadoop-senior oozie-4.0.0-cdh5.3.6]# export OOZIE_URL=http://hadoop-senior.ibeifeng.com:11000/oozie/
    
    [root@hadoop-senior oozie-4.0.0-cdh5.3.6]# bin/oozie job -config oozie-apps/shell-hive-select/job.properties -run
  • 相关阅读:
    论语学习系列(一)
    如何编译生成 dll
    Lua学习系列(二)
    Lua学习系列(一)
    Promise对象
    ... 扩展运算符
    class类
    proxy [ˈprɒksi] 代理
    HBuilder 打包流程
    Generator [ˈdʒenəreɪtə(r)] 函数结构
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10863350.html
Copyright © 2020-2023  润新知