Apache pig 把猪的内袋弄平

Apache pig 把猪的内袋弄平,apache-pig,flatten,Apache Pig,Flatten,我有这个: (1,{(1,2,3)}) (4,{(4,2,1),(4,3,3)}) (8,{(8,3,4)}) 我想要这个: (1,1,2,3) (4,4,2,1) (4,4,3,3) (8,8,3,4) 我发现这篇文章很有用,但无法使其发挥作用: 这似乎很容易,但我对猪还不熟悉。 提前谢谢 编辑以回答选举事务处的问题(感谢选举事务处): 在这里发布SO之前,我尝试将我的问题放平,结果得到以下错误(在我的示例中,d是C): 这是我最初的问题。但现在我在这里使用的可复制示例上尝试了同

我有这个:

(1,{(1,2,3)})

(4,{(4,2,1),(4,3,3)})

(8,{(8,3,4)})
我想要这个:

(1,1,2,3)

(4,4,2,1)

(4,4,3,3)

(8,8,3,4)
我发现这篇文章很有用,但无法使其发挥作用: 这似乎很容易,但我对猪还不熟悉。 提前谢谢

编辑以回答选举事务处的问题(感谢选举事务处):

在这里发布SO之前,我尝试将我的问题放平,结果得到以下错误(在我的示例中,d是C):

这是我最初的问题。但现在我在这里使用的可复制示例上尝试了同样的方法,它是有效的

grunt> A = load 'my_location_on_HDFS' using PigStorage('|') as (a,b,c);
grunt> B = group A by a;
grunt> describe B;
B: {group: bytearray,A: {(a: bytearray,b: bytearray,c: bytearray)}}
grunt> dump B;
(1,{(1,2,3)})
(4,{(4,2,1),(4,3,3)})
(8,{(8,3,4)})
grunt> C = foreach B generate group, flatten(A);
grunt> dump C;
(1,1,2,3)
(4,4,2,1)
(4,4,3,3)
(8,8,3,4)

我想我得去仔细看看我的原始数据/情况

如果你将袋子压平,那么你将得到所需的输出。让我们假设你上面的输入是B,你通过将输入a分组得到这个值

只要做一个描述B

Describe B;    
B: {group: bytearray,A: {()}}
这是一个包,如果你能试试这样的东西

 C= foreach B generate group, FLATTEN(A);

C将具有您想要的值。展平一个行李将产生单独的行

如果您展平行李,那么您将获得所需的输出。让我们假设您上面的输入是B,您通过将输入a分组得到该值

只要做一个描述B

Describe B;    
B: {group: bytearray,A: {()}}
这是一个包,如果你能试试这样的东西

 C= foreach B generate group, FLATTEN(A);

C将具有您想要的值。展平一个包将产生单独的行

您的问题与链接的问题不同,只是简单地使用了
展平
。您尝试过哪些不起作用的内容?对于在此处搜索时发现此帖子的人来说,这是一个问题。您的问题与您链接的问题不同,只是简单地使用了
FLATTEN
。你尝试过哪些不起作用的方法?对于那些在这里寻找这个帖子的人来说,这是一个很好的选择。