Apache pig 使用ApachePig扩展阵列

Apache pig 使用ApachePig扩展阵列,apache-pig,Apache Pig,我正在使用ApachePig分析数据,无法找到扩展数组的方法。 以下是我正在使用的模式,以及所需输出的示例: (col1:int, col2:int, items:{ARRAY_ELEM:(name:chararray, total:int)}) input = (1, 1, {("bird", 5), ("bear", 12), ("wolf", 10)}) output = (1, 1, "bird", 5, "bear", 12, "wolf", 10) 有什么方法可以实现这种转变吗

我正在使用ApachePig分析数据,无法找到扩展数组的方法。 以下是我正在使用的模式,以及所需输出的示例:

(col1:int, col2:int, items:{ARRAY_ELEM:(name:chararray, total:int)})
input  = (1, 1, {("bird", 5), ("bear", 12), ("wolf", 10)})
output = (1, 1, "bird", 5, "bear", 12, "wolf", 10)
有什么方法可以实现这种转变吗


谢谢你的帮助

如果您现在需要执行此转换,最简单的方法可能是使用Python或Java执行UDF(我不知道有任何内置解决方案)

但是,大多数情况下,最好在每个记录中保持相同数量的列(例如,将数组保持为一个包或元组,不要在一个记录中“展平”)

签出(希望很快成为Python PiggyBank的一部分)。您可以在您的行李上使用该功能,然后将其展平以获得您想要的结果,例如,假设您的数据集名为blah,您应该能够注册my函数,然后执行以下操作:

flattened_blah = FOREACH blah GENERATE item1, item2, FLATTEN(bagToTuple(item3)) AS item4, item5, item6, item7, item8, item9
而且,我很确定有办法做到这一点。如果你正在使用Pig,但还没有使用它,你可能应该看看它