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) ;