我有一个越来越多的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个参数值并将它们应用于同一列的区域运算符?
答案 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;