OOZIE工作流.xml没有函数映射到名称坐标:nominalTime

标签 oozie oozie-coordinator oozie-workflow

我正在使用 Oozie 的 SLA 功能。我尝试使用 ${coord:nominalTime()} 作为标称时间,但在安排工作流程时它会抛出错误:

E0803 : E0803: IO error, E1004: Expression language evaluation error, Validation error :No function is mapped to the name \"coord:nominalTime\"",

这是workflow.xml 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <wf:workflow-app xmlns:wf="uri:oozie:workflow:0.4" xmlns:spark="uri:oozie:spark-action:0.2" xmlns:shell="uri:oozie:shell-action:0.2" xmlns:sla="uri:oozie:sla:0.1" xmlns:coord="uri:oozie:coordinator:0.2" name="some-Job">
    <wf:global>
        <wf:job-tracker>${jobTracker}</wf:job-tracker>
        <wf:name-node>${nameNode}</wf:name-node>
    </wf:global>
    <wf:credentials>
        <wf:credential name="sds-creds" type="hcat">
            <wf:property>
                <wf:name>hcat.metastore.principal</wf:name>
                <wf:value>${hcatPrincipal}</wf:value>
            </wf:property>
            <wf:property>
                <wf:name>hcat.metastore.uri</wf:name>
                <wf:value>${hcatURL}</wf:value>
            </wf:property>
        </wf:credential>
    </wf:credentials>
    <wf:start to="some-Job"/>
    <wf:action name="some-Job" cred="sds-creds">
      <spark:job-tracker>${jobTracker}</spark:job-tracker>
      <spark:name-node>${nameNode}</spark:name-node>
      <spark:master>yarn</spark:master>
      <spark:mode>cluster</spark:mode>
      <spark:name>Some-Job</spark:name>
      <spark:class>com.Driver</spark:class>
      <spark:jar>hdfs:///user/abc.jar</spark:jar>
        <wf:ok to="End"/>
        <wf:error to="Kill"/>
    </wf:action>
    <wf:kill name="Kill">
        <wf:message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</wf:message>
    </wf:kill>
    <wf:end name="End"/>
    <sla:info>
        <sla:app-name>oozie-sla-test</sla:app-name>
        <sla:nominal-time>${coord:nominalTime()}</sla:nominal-time>
        <sla:should-start>1</sla:should-start>
        <sla:should-end>5</sla:should-end>
        <sla:notification-msg>Job couldn't complete</sla:notification-msg>
        <sla:alert-contact><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="becadbcdcafed9d3dfd7d290ddd1d3" rel="noreferrer noopener nofollow">[email protected]</a></sla:alert-contact>
        <sla:dev-contact><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bcc8d9cfc8fcdbd1ddd5d092dfd3d1" rel="noreferrer noopener nofollow">[email protected]</a></sla:dev-contact>
        <sla:qa-contact><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="81f5e4f2f5c1e6ece0e8edafe2eeec" rel="noreferrer noopener nofollow">[email protected]</a></sla:qa-contact>
        <sla:se-contact><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e094859394a0878d81898cce838f8d" rel="noreferrer noopener nofollow">[email protected]</a></sla:se-contact>
    </sla:info> </wf:workflow-app>

此错误的原因可能是什么?

最佳答案

您是否定义了启动此工作流程的协调器 xml?除非涉及协调员,否则您将无法使用 ${coord:nominalTime()}。

在协调器中:

    <action>
        <workflow>
            <app-path>wf.xml</app-path>
            <configuration>
                <property>
                    <name>nominalTime</name>
                    <value>${coord:nominalTime()}</value>
                </property>
            </configuration>
        </workflow>
    </action>

在工作流程中:

        <sla:info>
            <sla:nominal-time>${nominalTime}</sla:nominal-time>
        ...
        </sla:info>

关于OOZIE工作流.xml没有函数映射到名称坐标:nominalTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55867817/

相关文章:

hadoop - Oozie作业由于模拟错误而无法运行(通配符支持)

hadoop - Oozie 简单 ssh 作业失败 : AUTH_FAILED: Not able to perform operation

java.lang.IllegalArgumentException : Attempt to add ([custom-jar-with-spark-code]. jar) 多次到分布式缓存

hadoop - Spark自定义序列化程序导致ClassNotFound

hadoop - 每天重新运行 oozie 工作流

shell - 无法使用 oozie 运行 shell 脚本

hadoop - 用oozie工作流文件元素的外部文件运行Pig UDF的等效方法

hadoop - 在旧数据集上启动oozie协调器

bash - “moveToLocal: Option ' -moveToLocal'尚未执行什么操作。”手段?

Oozie 工作流警告 - "The application does not define formal parameters in its XML definition"