从bundle.properties中设置Oozie包中的协调员名称

时间:2018-02-27 19:18:11

标签: bundle oozie oozie-coordinator

我使用Oozie套件来管理两个协调员(目前为止)。它们是相同的过程,但适用于两个不同的客户。我在启动bundle.properties时调用的bundle.xml文件中定义了客户端名称。我尝试使用客户端名称来命名每个协调员,但我一直看到以下错误的变体:

  

错误:E0701:E0701:XML架构错误,cvc-pattern-valid:值   ' Daily_job _#{客户端1}'对于模式而言,这不是一个有效的方面   '(A-ZA-Z *){1,39}'对于类型' IDENTIFIER'

我一直在使用$ {}根据此帖子访问变量名称vs#{}:Renaming Oozie coordinator dynamically.我似乎能够从{{{{}}访问变量作为属性1}}只是不在名称中。

以下是我在bundle.properties中尝试过的内容:

bundle.xml

<coordinator name='Daily_job_#{client1}' >
...
      <property>
          <name>client</name>
          <value>${client1}</value>
      </property>

</coordinator>

<coordinator name='Daily_job_${client1}' > ... </coordinator>

bundle.properties

我能够在协调器和工作流程中访问属性中的客户端值,但我似乎无法根据属性命名协调器。谁能帮我?谢谢!

2 个答案:

答案 0 :(得分:0)

看到您收到该特定错误似乎表明该名称恰好是一个包:IDENTIFIER类型不符合Oozie开发人员定义的模式。

这意味着您的XML正在针对架构和捆绑包进行格式化验证:IDENTIFIER将针对正则表达式进行检查,该正则表达式仅允许名称中的字母数字,短划线和下划线,最少1个字符40个字符。

<xs:simpleType name="IDENTIFIER">
    <xs:restriction base="xs:string">
        <xs:pattern value="([a-zA-Z]([\-_a-zA-Z0-9])*){1,39})"/>
    </xs:restriction>
</xs:simpleType>

格式良好是一个XML预处理步骤,可能会限制您的替换字符,因为$#{}不包含在正则表达式中。

https://github.com/apache/oozie/blob/master/client/src/main/resources/oozie-bundle-0.2.xsd

答案 1 :(得分:0)

我正在使用Oozie捆绑模式0.1:xmlns='uri:oozie:bundle:0.1',并将其更改为0.2:xmlns='uri:oozie:bundle:0.2'现在可以使用了。我也使用$ {}的第二个变体,所以在bundle.xml

<coordinator name='Daily_job_${client1}' >
...
</coordinator>

是否可以使用。