2016-08-11 6 views
0

1つの列のデータを処理するために、豚スクリプトに動的に渡したいIDのリストが増えています。PIG:N個のパラメータ値を動的に渡す方法

私は手動でパラメータ値を渡していますが、スケーラブルではありません。

コマンド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

私は意志、この問題を解決する必要がある場合: -

1>単純なテキストファイル(id.txt言う)を作成し、それにニュースのIDを付加し続けます。

2> $のINPUTファイルとレコードに参加するために私のPIGスクリプト内id.txt使用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; 
関連する問題