当我使用DESCRIBE
时,我在Pig输出中看到了很多双冒号,并且它们的意思并不明显。
例如,在分组和展平后,我看到类似的内容:
key::observerId:chararray,key::endpoint:chararray,...
在某些时候,我按照observerId和endpoint进行了分组,将组元组重命名为'key',然后重新提示。那么,双冒号究竟是什么意思,我应该如何引用第一个关系(key?observerId?)
答案 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别名。