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

New*_*ang 4 hadoop apache-pig

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

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

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

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

Avk*_*han 5

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

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

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

key      = some_statement_with_observerID_and_endpoint
otherkey = some_statement_with_observerID_and_endpoint
Run Code Online (Sandbox Code Playgroud)

基于此,您必须看到如下所示的内容:

key::observerId:chararray,key::endpoint:chararray,...
Run Code Online (Sandbox Code Playgroud)

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