2017-02-03 3 views
0

Я пытаюсь преобразовать мой ввода данных, которая выглядит как:Преобразовать элементы свинки кортежа строк

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

в Свести структуру, где типы разделяются на отдельные строки, как:

1, A, a1, 101 
1, A, a2, 101 
1, A, a3, 101 
2, B, b1, 202 
2, B, 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;