2014-01-09 33 views
1

是否有可能同時運行水壺作業超過一次?從兩個不同的腳本運行相同的水壺作業問題

我試圖

說我們是在同一時間的兩倍運行此腳本,

sh kitchen.sh -rep="development" -dir="job_directory" -job="job1" 

如果我在一個時間點上運行它只有一次,數據流是完全精細。

但是,當我在同一時間運行此命令兩次,它拋出錯誤,如:

ERROR 09-01 13:34:13,295 - job1 - Error in step, asking everyone to stop because of: 
ERROR 09-01 13:34:13,295 - job1 - org.pentaho.di.core.exception.KettleException: 
java.lang.Exception: Return code 1 received from statement : mkfifo /tmp/fiforeg 
Return code 1 received from statement : mkfifo /tmp/fiforeg 

    at org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoader.execute(MySQLBulkLoader.java:140) 
    at org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoader.processRow(MySQLBulkLoader.java:267) 
    at org.pentaho.di.trans.step.RunThread.run(RunThread.java:50) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: java.lang.Exception: Return code 1 received from statement : mkfifo /tmp/fiforeg 
    at org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoader.execute(MySQLBulkLoader.java:95) 
    ... 3 more 

到在同一時間同時運行兩次工作是很重要的。爲了實現這一點,我可以複製每個作業,並在某個時間點運行原作和重複作業。但是,從長遠來看,這不是一個好方法!

問:

  1. 是Pentaho的不是保持線程?

  2. 我是否缺少一些選項,或者我可以啓用某些選項以使pentaho爲不同的作業實例創建不同的線程?

回答

3

當然水壺保持線程。事實上,其中很多都是。看起來問題是MySQL批量加載程序使用FIFO。您有兩個名爲/ tmp/fiforeg的FIFO實例。第一個運行實例創建FIFO就好了;然後第二個嘗試創建具有相同名稱的另一個實例並導致錯誤。

在作業開始時,您需要爲該實例生成唯一的FIFO名稱。我認爲您可以通過在作業開始時使用Generate random value步驟添加轉換來生成隨機字符串甚至UUID並通過Set variables步驟將其存儲在作業中的變量中來實現。

然後,您可以在MySQL批量加載程序的'Fifo文件'字段中使用此變量。

希望能爲你工作。我不使用MySQL,所以我無法確定。

+0

再次爲我工作! :) 非常感謝!!! –

相關問題