【问题标题】:What exactly does the double colon mean in Pig?Pig中的双冒号到底是什么意思?
【发布时间】:2013-03-26 21:35:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: hadoop apache-pig


    【解决方案1】:

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

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

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

    key      = some_statement_with_observerID_and_endpoint
    otherkey = some_statement_with_observerID_and_endpoint
    

    基于此,您会看到如下内容:

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

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

    【讨论】:

    • 那么,如果我执行FOREACH,我如何通过明确的名称key::observerId 访问这些内容?
    • 您真正需要记住的是,您的别名是哪些字段,然后您可以使用 alias::field 组合来访问您的目标字段数据。
    猜你喜欢
    • 1970-01-01
    • 2019-09-14
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2016-12-23
    • 2012-10-09
    相关资源
    最近更新 更多