2014-01-09 75 views
0

我正在嘗試創建一個更改列順序的PIG腳本。這是我想出迄今:由於括號和逗號導致PigUnit測試失敗

inputdata = LOAD 'path/to/file/on/hdfs' USING PigStorage() AS (param1:chararray, param2:chararray, param3:chararray); 
outputdata = FOREACH inputdata GENERATE param1, param3, param2; 
DUMP outputdata; 

我還沒有嘗試這一尚未對HDFS,但我想我會繼續前進,先寫單元測試。不幸的是它不起作用。

單元測試代碼:

PigTest test = new PigTest("path_to_script.pig"); 
FixHadoopOnWindows.runFix(); 

String[] input = { 
    "valueparam1\tvalueparam2\tvalueparam3" 
}; 

String[] output = { 
    "valueparam1\tvalueparam3\tvalueparam2" 
}; 

test.assertOutput("inputdata", input, "outputdata", output); 

的FixHadoopOnWindows位修復,所以我可以輕鬆運行在Windows機器上我的單元測試。我在一些博客中發現它,並幫助解決了我遇到的許可問題。

所以現在我的測試運行,但問題是assertOutput失敗。當我檢查的區別,我得到這個:

預計:

valueparam1 valueparam3 valueparam2 

實際:

(valueparam1,valueparam3,valueparam2) 

所以我讓這些括號和逗號我從來沒有要求。現在我不確定這是否是單元測試代碼中的錯誤,或者是我的實際腳本中的錯誤,因此任何建議都可以讓我開始。謝謝。

回答

1

想通了。 PigUnit讀出輸出數據值,它是PIG中的元組。直到我將它存儲到文件中,元組才轉換爲製表符分隔的記錄。

相關問題