2014-06-20 182 views
1

我正在使用Oozie將一組MapReduce作業串起來。由於需要大量的屬性,每個作業的單獨存根長約400行。這些屬性中的大多數在作業之間是相同的,並使用在config-default.xml中設置的配置。我希望能夠縮短每個存根並集中共同屬性,因爲在創建新作業時必須計算出哪些屬性是常見的,這是非常不切實際的。縮短Oozie工作流程

顯而易見的解決方案是通過將常用屬性放入每個存根中使用job-xml標籤調用的job.xml文件中來縮短工作流程。但是,job.xml似乎沒有讀取config-default.xml,因此變量在job.xml中未解析。我不能在job-xml標籤中使用config-default.xml,因爲它本身包含在job.properties中設置的變量。

有什麼建議嗎?有一個bash腳本運行並手動替換變量不是我可以使用的解決方案。

回答

1

您可以通過使用Global configurations

這樣,您就可以把所有的連接性能在全球部分縮短您的工作流程XML,它看起來像這樣:

<workflow-app xmlns="uri:oozie:workflow:0.4" name="wf-name"> 
<global> 
    <job-tracker>${job-tracker}</job-tracker> 
    <name-node>${namd-node}</name-node> 
    <job-xml>job1.xml</job-xml> 
    <configuration> 
     <property> 
      <name>mapred.job.queue.name</name> 
      <value>${queueName}</value> 
     </property> 
    </configuration> 
</global> 

注:請確保您使用正確的工作流程版本(在我的例子中是0.4)

+0

啊,謝謝,看起來很有用。我們使用0.2,但沒有理由不能升級到0.4。我過去看過全球,出於某種原因,認爲這只是一個Cloudera的事情。 –