我不确定这是否可以使用内置PIG脚本完成,或者我需要编写UDF代码。但我基本上有一个表,我只想转置数据。
简单说明,给出:
(1, 2, 3, 4, 5)
(6, 7, 8, 9, 10)
(11, 12, 13, 14, 15)
... 300 plus more tuples
我最终会:
(1,6,11,...) -> goes on for a few hundred more
(2,7,12,...)
(3,8,13,...)
(4,9,14,...)
(5,10,15,...)
有关如何实现这一目标的任何建议?
答案 0 :(得分:1)
这对Pig来说是不可能的,它也没有多大意义。请记住,关系是一个元组包,根据定义,不保证包的任何特定顺序的元组。你可以从
开始(1, 2, 3, 4, 5)
(6, 7, 8, 9, 10)
(11, 12, 13, 14, 15)
但从Pig的角度来看,这和
之间没有区别(11, 12, 13, 14, 15)
(1, 2, 3, 4, 5)
(6, 7, 8, 9, 10)
这意味着“转置”是不明确的。以这种方式看待它 - 如果你转置两次,你应该返回相同的数据结构,但由于元组可以在整个过程中重新排序,所以不能保证这种情况发生。
最后,如果你真的必须进行矩阵运算,最好使用一个尊重行和列排序的工具。
那就是说,你想要完成什么?