0

私は Hadoop フレームワークの初心者です。ですから、誰かが私を案内してくれると助かります。私は2種類のファイルを持っています。dirA/ --> ファイル_a、ファイル_b、ファイル_c

dirB/ --> 別のファイル a、別のファイル b...

ディレクトリ A 内のファイルには、トランザクション情報が含まれています。

次のようなものです:

   id, time_stamp
   1 , some_time_stamp
   2 , some_another_time_stamp
   1  , another_time_stamp

したがって、この種の情報は、dirA 内のすべてのファイルに散らばっています。最初にやるべきことは: 時間枠 (先週としましょう) を指定し、その時間枠の間に存在するすべての一意の ID を見つけたいとします。

それで、ファイルを保存します。

現在、dirB ファイルにはアドレス情報が含まれています。何かのようなもの:

    id, address, zip code
     1, fooadd, 12345
     and so on

したがって、最初のファイルによって出力されたすべての一意のID..それらを入力として受け取り、住所と郵便番号を見つけます。

基本的に、最終的なアウトは sql マージのようなものです。

時間枠の間のすべての一意の ID を検索し、アドレス情報をマージします。

助けていただければ幸いです。ありがとう

4

1 に答える 1

1

あなたはこれを豚としてタグ付けしたので、これを達成するためにそれを使用しようとしていると思いますか? もしそうなら、それは素晴らしい選択だと思います - これは豚では本当に簡単です!

times = LOAD 'dirA' USING PigStorage(', ') AS (id:int, time:long);
addresses = LOAD 'dirB' USING PigStorage(', ') AS (id:int, address:chararray, zipcode:chararray);
filtered_times = FILTER times BY (time >= $START_TIME) AND (time <= $END_TIME);
just_ids = FOREACH filtered_times GENERATE id;
distinct_ids = DISTINCT just_ids;
result = JOIN distinct_ids BY id, addresses BY id;

$START_TIMEおよびは、スクリプトに渡す$END_TIMEことができるパラメーターです。

于 2012-09-25T18:22:44.923 に答える