猪拉丁取第一场

时间:2016-06-23 17:23:46

标签: apache-pig

我有一个示例文件的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关系获得第一个提交。

2 个答案:

答案 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)