我正在学习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/

10-12 21:18