PIG - 将袋子的元素转换成字段

时间:2016-12-08 06:44:13

标签: apache-pig

我有一个带有以下输出(一行)的Pig查询

  

(6,{(6,76,35,1565),(6,76,76,920),(6,35,76,906),(6,177,35,822),(6,268,35,720),(6,35,177,701) ,(6,35,268,694),(6,35,35,656),(6,85,85,611),(6,35,90,559)})

我想将包的每个元素转换为字段,所以

  

(6,(6,76,35,1565),(6,76,76,920),(6,35,76,906),(6,177,35,822),(6,268,35,720),(6,35,177,701), (6,35,268,694),(6,35,35,656),(6,85,85,611),(6,35,90,559))

我可以用不同的名称命名每个字段:x1,x2,x3,.... 我尝试了展平,但是对于包的每个元素都做了一行:

  

6,(6,76,35,1565)

     

6,(6,76,76,920)

     

6,(6,35,76,906)

我希望所有元素都保留在一行中。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试以下链接可能会有所帮助

1。How to convert fields to rows in Pig?

2。write array from pig

答案 1 :(得分:0)

您必须使用BagToTuple。假设您有两个字段的关系A.

B = FOREACH A GENERATE A.$0,FLATTEN(BagToTuple(A.$1));