我使用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
我能够在协调器和工作流程中访问属性中的客户端值,但我似乎无法根据属性命名协调器。谁能帮我?谢谢!
答案 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>
是否可以使用。