Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache pig 理解映射语法_Apache Pig - Fatal编程技术网

Apache pig 理解映射语法

Apache pig 理解映射语法,apache-pig,Apache Pig,我在理解如何使用映射时遇到一些问题 接下来,我创建了一个包含以下文本的文件: [open#apache] [apache#hadoop] 最后,我能够加载该文件而没有错误: a = load 'data/file_name.txt' as (M:map []) 现在,我怎样才能得到所有“值”的列表?即 此外,我刚刚开始学习Pig,因此每一个提示都会非常有用。与地图交互的方法只有一种,那就是使用#操作符。为了使它具有更多的功能,您必须定义一些。因此,在pure pig中使用地图的唯一方法是:

我在理解如何使用
映射时遇到一些问题

接下来,我创建了一个包含以下文本的文件:

[open#apache]
[apache#hadoop]
最后,我能够加载该文件而没有错误:

a = load 'data/file_name.txt' as (M:map [])
现在,我怎样才能得到所有“值”的列表?即


此外,我刚刚开始学习Pig,因此每一个提示都会非常有用。

与地图交互的方法只有一种,那就是使用
#
操作符。为了使它具有更多的功能,您必须定义一些。因此,在pure pig中使用地图的唯一方法是:

B = FOREACH A GENERATE M#'open' ;
这将产生以下输出:

(apache)
()
请注意,
#
后面的值是带引号的字符串,不能更改,必须在运行作业之前设置

另外,请注意,is为第二行创建了一个NULL,因为该映射不包含一个值为“open”的键。这与在包含两个字符的模式上使用FILTER时略有不同:

B = FILTER A BY key=='open' ;
它产生输出:

(open,apache)
如果只需要该值,则可通过以下方式实现:

B = FOREACH (FILTER A BY key=='open') GENERATE value ;
产生:

(apache)
如果保留空值很重要,也可以使用以下方法生成空值:

它产生与
M#“open”相同的输出

根据我的经验,地图并不是很有用,因为它们限制性很大

(apache)
B = FOREACH A GENERATE (key=='open'?value:NULL) ;