说我有如下关系:
(A, (1, 2, 3)) (B, (2, 3))
是否可以通过使用Pig Latin扩展bag元素来建立新关系?
(A, 1) (A, 2) (A, 3) (B, 2) (B, 3)
我尝试使用FOREACH
和GENERATE
,但是在循环播放包元素时遇到了很难产生新元组的问题。
谢谢,
------------- 的修改 的 -------------
这是一个示例输入:
A 1 2 3 B 2 3
用制表符分隔,然后用空格分隔。
我使用STRSPLIT
来处理空格以生成元组。
raw_x = LOAD './sample.txt' using PigStorage('\t') AS (title:chararray, links:chararray); data_x = FOREACH raw_x GENERATE title, STRSPLIT(links, '\\s+') AS links;
答案 0 :(得分:1)
你能试试吗?
<强> input.txt中强>
A 1 2 3
B 2 3
<强> PigScript:强>
A = LOAD 'input.txt' USING PigStorage() AS (title:chararray,links:chararray);
B = FOREACH A GENERATE title,FLATTEN(TOKENIZE(links));
DUMP B;
<强>输出:强>
(A,1)
(A,2)
(A,3)
(B,2)
(B,3)