双结肠在猪身上究竟是什么意思?

时间:2013-03-26 21:35:51

标签: hadoop apache-pig

当我使用DESCRIBE时,我在Pig输出中看到了很多双冒号,并且它们的意思并不明显。

例如,在分组和展平后,我看到类似的内容:

key::observerId:chararray,key::endpoint:chararray,...

在某些时候,我按照observerId和endpoint进行了分组,将组元组重命名为'key',然后重新提示。那么,双冒号究竟是什么意思,我应该如何引用第一个关系(key?observerId?)

1 个答案:

答案 0 :(得分:5)

在您的问题中 :: 是消除歧义的运算符,用于在JOIN,COGROUP,CROSS或FLATTEN运算符之后标识字段名称。您可以找到使用消除歧义运算符here的示例。

在您的情况下,您有两个字段observerID和endpoint,它们都由密钥别名标识,表示observerID和endpoint都在同一别名中引用,而其他“observerID和endpoint”可能引用其他“key”别名。

我认为您使用了以下内容:

key      = some_statement_with_observerID_and_endpoint
otherkey = some_statement_with_observerID_and_endpoint

基于此,您需要看到如下所示的内容:

key::observerId:chararray,key::endpoint:chararray,...

上面的句子表示您看到的observerID和端点是键别名的一部分而不是otherkey别名。