PIG:如何动态传递N个参数值

时间:2016-08-11 20:35:13

标签: apache-pig parameter-passing

我有一个越来越多的ID列表,我想动态地传入一个猪脚本,以帮助处理单个列的数据。

我手动传递param值,这是不可扩展的。

命令EX:

pig --param id1=123 id2=456 id3=789 get foo.pig 

脚本示例

A = load '$INPUT' using AvroStorage();
B = foreach A generate value.rawData#'id' as user_id:chararray;
C = FILTER B BY user_id == '$id1' or user_id == '$id2' OR user_id == '$id3'; 
DUMP C;

如何动态传递N个参数值并将它们应用于同一列的区域运算符?

1 个答案:

答案 0 :(得分:0)

如果我必须解决这个问题,我会: -

1>创建一个简单的文本文件(比如id.txt)并继续向其添加新闻ID。

2 - ;使用我的PIG脚本中的id.txt与$ INPUT文件一起加入,如果找不到id,将自动过滤记录: -

A = load '$INPUT' using AvroStorage();
A = foreach A generate value.rawData#'id' as user_id:chararray;
B = load 'id.txt' using PigStorage as (userId:chararrray);
C = JOIN A by user_id B by userId ; 
-- after above JOIN C will only contain records which has user_id in both files
DUMP C;