2017-02-03 2 views
0

내가 보이는 내 입력 데이터를 변환하려고에 돼지 튜플의 요소를 변환과 같은 :

1, A, a1, 101 
1, A, a2, 101 
1, A, a3, 101 
2, B, b1, 202 
2, B, b2, 202 
... 

: 유형이 같은 개별 행으로 분리 편평한 구조로

Id,Name,Types,Code 
1, A, a1;a2;a3, 101 
2, B, b1;b2, 202 
... 

여기서 내가 시도한 것은 StrSplit 이후에 내가 개별 행으로 전개 할 수있는 BAG로 변환하려고하는 튜플을 얻는 것입니다.

input_data = LOAD '/user/gjhawar/latestSkillMappedEn.csv' USING PigStorage('|') AS 
(
id : chararray, 
name : chararray, 
type: chararray, 
code : chararray); 

a = LIMIT input_data 10; 

b = FOREACH a GENERATE (id, name, code), BagToString(TOBAG(STRSPLIT (type,'\\u003B',100)), ' ') as newCategoryName:chararray; 

답변

0

세미콜론은 구분 기호로 문제가 있습니다. 그것을 다른 것으로 바꾸고, 토큰 화하고 평평하게하십시오.

http://www.hadooplessons.info/2015/01/word-count-in-pig-latin.html

flattened_input_data = FOREACH a GENERATE skillId, skillName, matchType, culture, FLATTEN(TOKENIZE(REPLACE(categoryName,'\\u003B', '|'), '|')) as newCategoryName;