gpt4 book ai didi

hadoop - 如何在 Pig 中将一个组扁平化为一个元组?

转载 作者:可可西里 更新时间:2023-11-01 14:13:15 25 4
gpt4 key购买 nike

来自这里:

(1, {(1,2), (1,3), (1,4)} )
(2, {(2,5), (2,6), (2,7)} )

...我们如何生成这个?

((1,2),(1,3),(1,4))
((2,5),(2,6),(2,7))

...我们如何生成它?

(1, 2, 3, 4)
(2, 5, 6, 7)

对于单行,我知道该怎么做。问题是当我必须遍历许多行并同时操作内部组时。

最佳答案

针对你的问题,我准备了以下文件:

1,2
1,3
1,4
2,5
2,6
2,7

起初,我使用以下脚本获取您在问题中描述的输入 r3:

r1 = load 'test_file' using PigStorage(',') as (a:int, b:int);
r2 = group r1 by a;
r3 = foreach r2 generate group as a, r1 as b;
describe r3;
-- r3: {a: int,b: {(a: int,b: int)}}
-- r3 is like (1, {(1,2), (1,3), (1,4)} )

如果我们要生成如下内容,

(1, 2, 3, 4)
(2, 5, 6, 7)

我们可以使用下面的脚本:

r4 = foreach r3 generate a, FLATTEN(BagToTuple(b.b));
dump r4;

对于以下内容,

((1,2),(1,3),(1,4))
((2,5),(2,6),(2,7))

我找不到任何有用的内置函数。也许您需要编写自定义 BagToTuple。这是内置的 BagToTuple 源代码:http://www.grepcode.com/file/repo1.maven.org/maven2/org.apache.pig/pig/0.11.1/org/apache/pig/builtin/BagToTuple.java#BagToTuple.getOuputTupleSize%28org.apache.pig.data.DataBag%29

关于hadoop - 如何在 Pig 中将一个组扁平化为一个元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com