4

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

例如,在分组和展平之后,我看到如下内容:

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

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

4

1 回答 1

5

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

在您的情况下,您有两个字段observerID 和端点,它们都由键别名标识,这意味着observerID 和端点都在同一个别名中被引用,而其他“observerID 和端点”可能被其他“键”别名引用。

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

key      = some_statement_with_observerID_and_endpoint
otherkey = some_statement_with_observerID_and_endpoint

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

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

上面这句话意味着您看到的observerID 和endpoint 是key 别名的一部分,而不是otherkey 别名。

于 2013-03-27T00:06:47.660 回答