为什么不在PIG中的UDF中“展平”?

时间:2016-10-02 08:17:55

标签: hadoop apache-pig

Pig UDF是区分大小写的。但当我使用Flatten作为“FLATTEN”或“flatten”时,它正在工作。这意味着flatten不是UDF。为什么?

1 个答案:

答案 0 :(得分:1)

FLATTEN运算符在语法上看起来像UDF,但它实际上是一个以UDF无法改变元组和包的结构的运算符。扁平化不包括元组和包。这个想法是一样的,但每种结构的操作和结果都不同。

对于元组,flatten用元组的字段代替元组。例如,考虑具有形式(a,(b,c))的元组的关系。表达式GENERATE $ 0,flatten($ 1)将导致该元组变为(a,b,c)。

对于行李来说,情况变得更加复杂。当我们解开一个包时,我们会创建新的元组。如果我们有一个由形式元组组成的关系({(b,c),(d,e)})并且我们应用GENERATE flatten($ 0),我们最终得到两个元组(b,c)和(d,e)所示。当我们在袋子中移除一定程度的嵌套时,有时我们会导致交叉产品发生。例如,考虑具有形式(a,{(b,c),(d,e)})的元组的关系,通常由GROUP运算符生成。如果我们将表达式GENERATE $ 0,flatten($ 1)应用于此元组,我们将创建新元组:(a,b,c)和(a,d,e)。

您可以找到更多信息link

相关问题