2015-02-05 28 views
1

每個轉換都會在一個文件夾中創建一個csv文件,並且我想在轉換完成時上傳所有這些文件。我添加了一個Dummy,但這個過程並沒有按照我的預期工作。每個轉換將執行Hadoop Copy Files步驟。爲什麼?我怎麼能設計流程?謝謝。所有的虛擬步驟在作業中不起作用

enter image description here

回答

2

首先,如果可能的話,儘量發動平行的.ktr文件(右鍵單擊開始步驟>並行點擊啓動下一個條目)。這將確保所有的ktr並行運行。

其次,您可以選擇的,這取決於你的可行性下面的步驟(而不是虛擬步)

  1. 檢查是否存在的文件」步驟:移動到Hadoop的步驟之前,你可以做一個小的檢查,如果所有的文件已經正確創建,然後繼續執行。
  2. 等待」步驟:在轉到下一個條目之前,您可以花一些時間等待完成所有步驟。我不建議這樣做,因爲編寫csv文件的時間可能會有所不同,除非您完全確定了一段時間。
  3. 評估文件度量標準」:在繼續前檢查文件的數量。在你的情況下,檢查文件計數是否爲9。

我只是想在將數據複製到HDFS之前對文件進行某種檢查。

希望它有幫助:)

1

你不能像你一樣加入轉換。

每次轉換成功後,都會進入虛擬步驟,因此它將被調用以進行每次轉換。

如果你想等到最後轉換完成只有一次Hadoop的文件複製步驟,你需要做兩件事情之一運行:

  1. 運行在一個序列中的轉換,其中每個KTR會被稱爲前一個成功(較慢)

  2. 正如另一個答案建議,並行啓動KTRs,但有一個警告:他們需要從一個子工作調用。這裏的想法:

你的主要工作有一個開始,調用一個子工作,一旦成功,調用Hadoop複製文件的步驟。

您的子作業有一個開始,所有轉換都是在不同的流程中調用的。您使用「並行啓動下一個條目」,以便一次啓動。

子作業將繼續運行,直到最後一次轉換完成,然後纔將流傳遞到Hadoop複製文件步驟,該步驟只會啓動一次。