2
我有一個豬腳本從文件中讀取輸入併發送到我們的自定義UDF,它發回帶有2個鍵/值對的映射。之後,我們必須將每個關鍵值對保存在2個不同的位置。我們正在使用Store進行此操作。我們面臨的問題是我們在豬腳本中使用的每個STORE命令都調用我們的自定義UDF。豬多個存儲命令創建重複的工作
>REGISTER MyUDF.jar;
>LOADFILE = LOAD '$file' AS record:chararray;
>MAPREC = FOREACH LOADFILE GENERATE MyUDF(record);
>ERRLIST = FOREACH MAPREC {
>GENERATE $0#'errorRecord' AS ErrorRecord;
>};
>ERRLIST = FILTER ERRLIST BY ErrorRecord is not null;
>MLIST = FOREACH MAPREC {
>GENERATE $0#'mInfo' AS MRecord;
>};
>MLIST = FILTER MLIST BY MRecord is not null;
>STORE MLIST INTO 'fileOut';
>STORE ERRLIST INTO 'errorDir';
是否有豬腳本的方式通過UDF將只被調用一次,即使我們有多個商店....
謝謝克里斯的輸入。我們會嘗試。但是,當我們使用Pig'Explain'時,它顯示了兩個Map Reduce計劃,每個計劃用於2個STORE命令,就像豬腳本一樣....這使我認爲我們如何提取/使用豬關係可能是錯誤的......任何輸入在這 – Sarath
沒錯。我期望看到兩個商店的mapreduce步驟,因爲STORE UDF與OutputFormat類進行交互,每個Reducer通常有一個OutputFormat。 –
Pig不會逐行執行逐行執行的腳本。相反,它會逐步爲賦值語句中的每個「變量」建立公式(缺少更好的單詞)。我不知道Pig如何決定何時開始mapreduce步驟,但在你的情況下,它等待太久。我提出的建議有望在處理的早期觸發另一個mapreduce步驟。 –