Oozie配置问题,不会配置参数,无法识别我给的参数

任务是每天定时执行一个shell文件做增量,shell中是sqoop任务,其中的部份内容用参数配置,例如数据库信息之类的。如下

img

我的想法是把参数配在job.properties中,便于维护修改
Job.properties如下:

img

coordinator.xml如下

img


workflow.xml是需要向shell文件中传入两个参数,一个增全量标识,一个开始时间,单独执行shell的命令为 sh test.sh full 2023-08-24
我写的workflow如下

img

前提是,公司要求手写,不能用拖拽(麻人)
目前报错信息是:Missing argument for option:connect
我怀疑是参数配置的问题,没有读取到我job.properties中的IP等参数,希望可以帮我看一下,有哪些问题需要修改,感谢!

Oozie Shell Action(Oozie 使用shell) 配置及遇到的问题总结
可以参考下


Oozie Shell Action(Oozie 使用shell) 配置及遇到的问题总结_cihongmo6452的博客-CSDN博客 问题导读 1.Shell Action 不能运行哪些shell脚本? 2.Shell Action能用来完成什么事情? 1. Shell Action Shell action运行一个shell命令,需要配置的有job-tracker,name-node和一些必要的参数。 经过配... https://blog.csdn.net/cihongmo6452/article/details/100830821

参考这个正确引用
Oozie 工作流定义文件的示例,其中定义了一个参数 inputDir

<workflow-app xmlns="uri:oozie:workflow:0.5" name="my-workflow">
    <start to="step-1"/>

    <action name="step-1">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>inputDir</name>
                    <value>${inputDir}</value>
                </property>
            </configuration>
            <main-class>com.example.Step1</main-class>
        </java>
        <ok to="step-2"/>
        <error to="fail"/>
    </action>

    <action name="step-2">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>inputDir</name>
                    <value>${inputDir}</value>
                </property>
            </configuration>
            <main-class>com.example.Step2</main-class>
        </java>
        <ok to="end"/>
        <error to="fail"/>
    </action>

    <kill name="fail">
        <message>Workflow failed</message>
    </kill>

    <end name="end"/>
</workflow-app>





<workflow-app xmlns="uri:oozie:workflow:0.5" name="MyWorkflow">
    <start to="shell-node" />
    <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.4">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>test.sh</exec>
            <file>test.sh</file>
            <argument>${full}</argument>
            <argument>${startTime}</argument>
            <capture-output />
        </shell>
        <ok to="end" />
        <error to="fail" />
    </action>
    <kill name="fail">
        <message>Shell action failed</message>
    </kill>
    <end name="end" />
</workflow-app>

在配置参数时,指定-config参数设置正确的job.properties文件路径,例如,将-config job.properties修改为-config /path/to/job.properties,确保指定的路径是正确的

结合GPT给出回答如下请题主参考
在 Oozie 中,可以通过使用 job.properties 文件来指定任务所需的参数。您可以在 job.properties 文件中指定 sqoop 任务所需的参数,例如数据库信息、用户名、密码等。

在 job.properties 文件中,可以定义键值对,如下所示:

# 数据库信息
db.url=jdbc:mysql://localhost:3306/database_name
db.username=username
db.password=password

# Sqoop 参数
sqoop.args=--hive-import --create-hive-table --hive-table table_name \
--connect ${db.url} --username ${db.username} --password ${db.password} \
--table table_name --incremental lastmodified --check-column last_modified \
--last-value 0

在 shell 脚本中,可以通过使用 $符号来引用这些参数。例如,在执行 sqoop 任务时,可以使用以下命令:

sqoop ${sqoop.args}

这将读取 job.properties 文件中定义的 sqoop.args 参数并将其传递给 sqoop 命令。

您还可以使用其他的参数,在 job.properties 文件中配置并在 shell 脚本中引用它们。例如,您可以指定任务的名称、调度时间等。

在coordinator.xml中,需要指定job.properties文件的路径。这可以通过在标签中使用标签并设置name属性为oozie.coord.job.properties来实现。在workflow.xml中,需要正确地引用job.properties中的参数。可以使用${}语法来引用参数。
确保job.properties文件中的参数值是正确的。
确认Oozie工作目录结构以及文件命名规则是否符合要求

OOZIE系统遇到的各种问题解决_oozie调用的文件,参数与实际不符合_flash胜龙的博客-CSDN博客 这玩意儿装起来真是呕心沥血。网上找不到编译后的文件,下载下来是源码,大小只有2.27 MB……编译完变成2GB了。得装mysql得装maven(这个尤其重要)得配置hadoop代理等等/etc/hosts里面的问题尤其无语:一定记得要进hadoop-master2-namenode-ubuntu.log查看日志,会发现很多exception。这回是非常恶心的问题,装oozie的时候_oozie调用的文件,参数与实际不符合 https://blog.csdn.net/u010770993/article/details/70312444?ops_request_misc=&request_id=&biz_id=102&utm_term=Oozie%E9%85%8D%E7%BD%AE%E9%97%AE%E9%A2%98%EF%BC%8C%E4%B8%8D%E4%BC%9A%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%EF%BC%8C%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%E6%88%91%E7%BB%99%E7%9A%84%E5%8F%82%E6%95%B0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-70312444.142^v93^chatsearchT3_2&spm=1018.2226.3001.4187

检查 job.properties 文件路径,确保 job.properties 文件路径是正确的,并且在 Oozie 的工作目录中可见,在 workflow.xml 文件中,确保正确地引用了 job.properties 文件中的参数

【以下回答由 GPT 生成】

首先,根据提供的配置文件,我注意到以下几个问题:

  1. job.properties 文件中定义了 nameNode 参数,但是在 workflow.xml 文件中并没有使用该参数。
  2. job.properties 文件中没有定义 jobTracker 参数,而 workflow.xml 文件中使用了该参数。
  3. workflow.xml 文件中使用了 ${full}${startTime} 参数,但是这些参数在 coordinator.xmljob.properties 中都没有定义。

为了解决上述问题,你可以按照以下步骤进行修改:

  1. job.properties 文件中添加 jobTracker 参数,并根据实际情况进行配置。例如:
jobTracker=mapred.job.tracker
  1. workflow.xml 文件中使用 ${nameNode} 参数来替代 hdfs://localhost:8020,例如将 <name-node>${nameNode}</name-node> 改为 <name-node>${nameNode}</name-node>

  2. 根据你的需求,在 job.properties 中添加自定义参数。例如,你可以添加 fullstartTime 参数,并配置相应的值:

full=true
startTime=2023-08-24T00:00Z
  1. coordinator.xml 中的参数 ${start}${end} 替换为实际的值,并确保该值与 job.properties 文件中的 startTimeendTime 参数匹配。

修改后的 job.properties 文件内容:

# job.properties
nameNode=hdfs://localhost:8020
jobTracker=mapred.job.tracker
oozie.use.system.libpath=true
oozie.wf.rerun.failnodes=true
full=true
startTime=2023-08-24T00:00Z

修改后的 workflow.xml 文件内容:

<workflow-app xmlns="uri:oozie:workflow:0.5" name="MyWorkflow">
    <start to="shell-node" />
    <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.4">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>test.sh</exec>
            <file>test.sh</file>
            <argument>${full}</argument>
            <argument>${startTime}</argument>
            <capture-output />
        </shell>
        <ok to="end" />
        <error to="fail" />
    </action>
    <kill name="fail">
        <message>Shell action failed</message>
    </kill>
    <end name="end" />
</workflow-app>

通过以上修改,你应该能够成功传递参数并解决 "Missing argument for option:connect" 的错误。如果还有其他问题,请随时向我提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^