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中的双冒号到底是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

R中的双冒号(::)是啥?

双冒号是啥意思?

Java的方法参数中的双感叹号和#号是啥意思?

STL 中的双端队列到底是啥?

URL中的冒号“:”是啥意思?

javascript中的双括号是啥意思以及如何访问它们