PigLatin - 从关系中删除元组/字段

时间:2014-04-22 15:04:41

标签: filtering apache-pig relation

这是我在StackOverflow上的第一篇文章,如果这篇文章过于冗长和/或含糊不清,请提前原谅我。

我有一个Pig关系如下:

my_relation = LOAD '/path/to/data' USING PigStorage(',') 
              AS (f1:chararray, f2:chararray, f3:chararray);

现在,我想过滤掉字段' f3'从上述关系' my_relation'。我知道我可以这样做:

my_new_relation = FOREACH my_relation GENERATE my_relation.f1, my_relation.f2;

当我在“my_relation”中有大量字段/元组时,会出现此方法的问题。关系。比方说,my_relation有900个字段/元组,我想要所有这些但只有一个。现在,通过上述方法,我必须在生成' GENERATE'之后列出899个字段/元组。关键词!

我的问题:是否有一种简单的方法可以从PigLatin中的关系中过滤出少数字段/元组?

之前:我之前关于Apache Pig和PigLatin的一般情况非常弱(可以通过这个问题的难度来讲述)。我还在阅读发现的猪文档here

感谢您阅读此问题!任何/所有帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

首先,你的语法不太正确。如果您只想保存字段f1f2,就可以这样做:

my_new_relation = FOREACH my_relation GENERATE f1, f2;

关于您的问题,您可以使用project-range expression

my_new_relation = FOREACH my_relation GENERATE f1 .. f345, f347 .. f900;

答案 1 :(得分:0)

此外,您可以编写自己的加载程序,您可以在其中指定要加载的所有列。