小编典典

如何在PIG中转置列和行

java

我不确定是否可以使用内置的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,...)

关于如何实现此目标的任何建议?


阅读 194

收藏
2020-11-30

共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)

这意味着“转置”定义不正确。以这种方式看待它–如果两次转置,则应该返回相同的数据结构,但是由于元组可以沿途重新排序,因此不能保证会发生这种情况。

最后,如果您确实必须执行矩阵运算,那么最好使用同时尊重行和列顺序的工具。

也就是说,您要完成什么?

2020-11-30