我有一个示例文件的pig代码。
001,Rajiv,Reddy,21,9848022337,Hyderabad
002,siddarth,Battacharya,22,9848022338,Kolkata
003,Rajesh,Khanna,22,9848022339,Delhi
004,Preethi,Agarwal,21,9848022330,Pune
我使用PIG load命令加载上述文件&然后通过它循环并得到2,3个字段如下。
students = LOAD '/user/4965056e873066f2abe966b4129918/Pig_Data/students.txt' USING PigStorage(',') as (id:int,fname:chararray,lname:chararray,age:int,mob:chararray,city:chararray);
each1 = foreach students generate (id,fname,lname);
每个1的输出:
((001,Rajive,reddy))
等。
现在我想获得each1
的第一个领域,即ID
如何获得它。我尝试了下面的代码,但显示错误
each2 = foreach each1 generate(students.id)
需要从each2
关系获得第一个提交。
答案 0 :(得分:0)
each2 = foreach each1 generate $0;
答案 1 :(得分:0)
将额外的括号添加到each1
关系中,只需删除它们:
students = LOAD '/user/4965056e873066f2abe966b4129918/Pig_Data/students.txt' USING PigStorage(',') as (id:int,fname:chararray,lname:chararray,age:int,mob:chararray,city:chararray);
each1 = foreach students generate id,fname,lname;
你会得到类似的东西:
(001,Rajive,reddy)
对于each2
关系,您可以在不使用限定符each1
的情况下获得students
的任何字段,使用提交的名称或提交的位置,如下所示:
each2 = foreach each1 generate id;
each2 = foreach each1 generate $0;
你会得到类似的东西:
(001)