我正在学习Hadoop猪,我总是坚持参考元素。请找下面的例子。
groupwordcount: {group: chararray,words: {(bag_of_tokenTuples_from_line::token: chararray)}}
如果我们有嵌套的元组和包,请有人解释如何引用这些元素。
任何可以更好地理解嵌套引用的链接都会有很大的帮助。
答案 0 :(得分:1)
让我们做一个简单的演示来理解这个问题。
说一个文件'a.txt'存储在HDFS的'/tmp/a.txt'文件夹中
A = LOAD'/ tmp / a.txt'使用PigStorage(',')AS(名称:chararray,术语:chararray,gpa:float);
转储A;
(约翰,FL,3.9)
(约翰,FL,3.7)
(约翰,SP,4.0)
(约翰,SM,3.8)
(玛丽,FL,3.8)
(玛丽,FL,3.9)
(玛丽,SP,4.0)
(玛丽,SM,4.0)
现在让我们根据一些参数说明名称和术语
,按照别名'A'进行分组B = GROUP A BY(名称,术语);
转储B;
((约翰,FL),{(约翰,FL,3.7),(约翰,FL,3.9)})
((约翰,SM),{(约翰,SM,3.8)})
((约翰,SP),{(约翰,SP,4.0)})
((玛丽,FL),{(玛丽,FL,3.9),(玛丽,FL,3.8)})
((玛丽,SM),{(玛丽,SM,4.0)})
((玛丽,SP),{(玛丽,SP,4.0)})
描述B;
B:{group:(name:chararray,term:chararray),A:{(name:chararray,term:chararray,gpa:float)}}
现在它已成为您提出的问题陈述。让我演示如何访问组元组或元组元素或两者的元素
C = foreach B生成group.name,group.term,A.name,A.term,A.gpa;
转储C;
(约翰,FL,{(约翰),(约翰)},{(FL),(佛罗里达州)},{(3.7),(3.9)})
(约翰,SM,{(约翰)},{(SM)},{(3.8)})
(约翰,SP,{(约翰)},{(SP)},{(4.0)})
(玛丽,FL,{(玛丽),(玛丽)},{(FL),(佛罗里达州)},{(3.9),(3.8)})
(玛丽,SM,{(玛丽)},{(SM)},{(4.0)})
(玛丽,SP,{(玛丽)},{(SP)},{(4.0)})
所以我们通过这种方式访问了所有元素。
希望这有助于