Hadoop 从包中提取有序元组值

Hadoop 从包中提取有序元组值,hadoop,apache-pig,Hadoop,Apache Pig,在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.(fir

在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的事情,则将其展平($1)我将其全部展平并取消分组


这在pig中是可能的吗?如果是的话,我应该看什么命令?

我不可能在开箱即用的情况下做你想做的事情。你真的需要用a来做这个。我知道这很糟糕,因为您必须编写Java或Python代码,但您会发现有几种情况下Pig做得不够好。Pig可以被认为是一种数据流语言,而不是一种编程语言,这就是为什么UDF扮演着如此重要的角色:它们弥合了这一鸿沟

我的建议是您编写一个UDF,将
和值包作为参数。在自定义项中进行排序/排序,并进行展平



另一件您需要注意的事情是,现在您的行将具有不同的列数,而Pig实际上并不喜欢这样。如果您只是立即输出它,那么您可能会侥幸逃脱。您可能需要考虑让UDF在列表分隔符字符串或预先格式化的文件中写出列表。这没什么大不了的。。。请不要理会我的建议。

谢谢你的回答。我们最终确实为此编写了一份UDF。很高兴得到你们的确认,这是我们需要走的方向,而不仅仅是我对猪还不够了解。