Pig中的双冒号到底是啥意思?
Posted
技术标签:
【中文标题】Pig中的双冒号到底是啥意思?【英文标题】: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?)
【问题讨论】:
【参考方案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 组合来访问您的目标字段数据。以上是关于Pig中的双冒号到底是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章