将猪元组的元素转换为行

时间:2017-02-03 01:58:20

标签: hadoop apache-pig

我正在尝试转换输入数据,如下所示:

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;

1 个答案:

答案 0 :(得分: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;