2014-01-09 2 views
0

열의 순서를 변경하는 PIG 스크립트를 만들려고합니다. 이것은 내가 지금까지 함께 온 것입니다 : 내가 HDFS에 아직 시도하지했지만 내가 가서 먼저 단위 테스트를 작성 거라고 생각괄호와 쉼표로 인해 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; 

. 불행히도 그것은 작동하지 않습니다.

단위 테스트 코드 :

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 비트는 내가 쉽게 윈도우 머신에 내 단위 테스트를 실행할 수있는 수정 프로그램입니다. 나는 그것을 일부 블로그에서 발견했고, 내가 가진 권한 문제를 해결하는 것을 도왔다.

이제 테스트를 실행했지만 assertOutput이 실패하는 것이 문제입니다. 나는 그 차이를 확인할 때,이 얻을 : 예상

:

valueparam1 valueparam3 valueparam2 

실제 :

(valueparam1,valueparam3,valueparam2) 

그래서 내가 요구하지 대괄호와 쉼표의를 얻고있다. 이제는 이것이 유닛 테스트 코드 또는 실제 스크립트의 버그인지 여부를 확신 할 수 없으므로 시작하기위한 조언이 필요합니다. 감사.

답변

1

알아 냈어. PigUnit은 PIG의 Tuple 인 outputdata 값을 읽습니다. 튜플을 탭으로 분리 된 레코드로 변환한다는 것은 파일에 저장하기 전까지는 아닙니다.

관련 문제