gpt4 book ai didi

hadoop - 从包中提取有序的元组值

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

在 pig 中,我将我的数据按摩成类似这样的东西:

(a,{(b,c),(d,e),(f,g)})
(h,{(i,j),(k,l)})

其中第一项是组,包是与组相关的其他值。我想把它变成以下格式:

(a,b,c,d,e,f,g)
(h,i,j,k,l)

我到了现在的位置

grunt> j = foreach G {            
>> o = order myvar by second;
>> generate group, o.(first,second);
>> };

因此包中的元组当前是有序的。如果我执行类似 mystuff = foreach j generate group, flatten($1); 的操作,我会将其全部展平并取消分组。

这在 pig 中可行吗?如果可行,我应该查看什么命令?

最佳答案

我无法开箱即用。你真的需要使用 user-defined function为了这。我知道这很糟糕,因为您必须编写 Java 或 Python 代码,但您会发现 Pig 在某些情况下做得还不够。 Pig 可以被视为一种数据流语言,而不是一种编程语言,这就是 UDF 发挥如此重要作用的原因:它们弥合了差距。

我的建议是编写一个 UDF,将 group 和值包作为参数。在 UDF 中进行排序/排序以及展平。


您要注意的另一件事是,现在您的行将具有不同数量的列,而 Pig 并不喜欢这样。如果你只是立即输出它,你可能可以摆脱这个。您可能需要考虑让您的 UDF 以制表符分隔的字符串或预先格式化的形式写出列表。这没什么大不了的……请随意忽略我的建议。

关于hadoop - 从包中提取有序的元组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11906474/

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