通过pig中的元素循环生成关系的新元组

sd2nnvve  于 2021-06-25  发布在  Pig
关注(0)|答案(3)|浏览(367)

假设我有如下关系:

(A, (1, 2, 3))
(B, (2, 3))

是否可以通过使用pig拉丁语扩展bag元素来建立新的关系?

(A, 1)
(A, 2)
(A, 3)
(B, 2)
(B, 3)

我试过用 FOREACH 以及 GENERATE ,但在循环遍历bag元素时,我很难生成新的元组。
谢谢,

z4bn682m

z4bn682m1#


以下是输入示例:

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;
9cbw7uwe

9cbw7uwe2#

你能试试这个吗?
输入文件

A       1 2 3
B       2 3

Pig手稿:

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)

相关问题