我正在学习Hadoop Pig,并且始终坚持引用这些元素。请找到以下示例。
groupwordcount: {group: chararray,words: {(bag_of_tokenTuples_from_line::token: chararray)}}
如果我们嵌套了元组和包,有人可以解释一下如何引用这些元素。
任何可以更好地了解嵌套引用的链接都将提供很大的帮助。
最佳答案
让我们做一个简单的演示来理解这个问题。
说一个文件“a.txt”存储在HDFS的“/tmp/a.txt”文件夹中
A =使用PigStorage(',')AS(名称:chararray,term:chararray,gpa:float)加载'/tmp/a.txt';
转储A;
(约翰,fl,3.9)
(约翰,fl,3.7)
(约翰,sp,4.0)
(约翰,SM,3.8)
(Mary,fl,3.8)
(Mary,fl,3.9)
(玛丽,SP,4.0)
(玛丽,SM,4.0)
现在,让我们根据一些别名(例如名称和术语)将别名“A”分组
B = GROUP A BY(名称,术语);
转储B;
(((John,fl),{(John,fl,3.7),(John,fl,3.9)})
(((John,sm),{(John,sm,3.8)})
(((John,sp),{(John,sp,4.0)})
((Mary,fl),{(Mary,fl,3.9),(Mary,fl,3.8)})
(((Mary,sm),{(Mary,sm,4.0)})
(((Mary,sp),{(Mary,sp,4.0)})
描述B;
B:{group :(名称:chararray,term:chararray),A:{(name:chararray,term:chararray,gpa:float)}}
现在,它已成为您所要求的问题陈述。让我向您展示如何访问组元组的元素或A元组的元素或同时访问两者
C = foreach B生成group.name,group.term,A.name,A.term,A.gpa;
转储C;
(John,fl,{(John),(John)},{(fl),(fl)},{(3.7),(3.9)})
(John,sm,{(John)},{(sm)},{(3.8)})
(John,sp,{(John)},{(sp)},{(4.0)})
(Mary,fl,{(Mary),(Mary)},{(fl),(fl)},{(3.9),(3.8)})
(Mary,sm,{(Mary)},{(sm)},{(4.0)})
(Mary,sp,{(Mary)},{(sp)},{(4.0)})
因此,我们通过这种方式访问了所有元素。
希望这对有帮助
关于apache - pig 引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44490831/