2016-09-22 24 views
0

私は全く新しいです。私は2つの関係AとBの複数の列をiidフィールドを使って結合したい。これは単純だと思われますが、正しく実行する方法を理解できません。私は参加しようとしましたが、一般的な列がないので何もありません。ので、ここでブタの複数の列を組み合わせる?

は私のデータです:

A 
FullName Age CIN 

B  
evaluation productivty 

と私は私の出力は次のようになりたい:

FullName Age CIN Evaluation Productivty 

.. .. .. .. ..

おかげ

+0

少なくとも2つのデータシートに参加するには、これらのデータシートで共通する1つの列が必要です。 –

+0

他の方法はありませんか? –

答えて

0

2つのリレーションを読み込み、すべての列で新しいリレーションを作成します。両方のファイルが同じ行数とフィールド数sはタブで区切られています。データに基づいて適切なデータ型を使用できます。

A = LOAD 'data1.txt' USING PigStorage('\t') as (FullName:chararray,Age:int,CIN:int); 
B = LOAD 'data2.txt' USING PigStorage('\t') as (Evaluation:chararray,Productivity:chararray); 
C = FOREACH A GENERATE A.Fullname,A.Age,A.CIN,B.Evaluation,B.Productivity; 
DUMP C; 
0

2つのテーブルを結合するには共通のキーが必要です。キーなしで2つのデータセットを結合する場合は、CROSSを使用できます。両方のデータセットの積を計算します。

A = LOAD 'a.txt' AS (FullName, Age, CIN); 
B = LOAD 'b.txt' AS (evaluation, productivity); 
C = CROSS A,B; 

あなたは行ずつ参加し、あなたがハックとして(豚0.14以降のみ)一意IDを使用

A = LOAD 'a.txt' AS (FullName, Age, CIN); 
B = LOAD 'b.txt' AS (evaluation, productivity); 
A1 = FOREACH A GENERATE *, UniqueID(FullName) AS id; 
B1 = FOREACH B GENERATE *, UniqueID(evaluation) AS id; 
C = JOIN A1 BY id, B1 BY id; 
D = FOREACH C GENERATE FullName, Age, CIN, evaluation, productivity; 

この完全にすることができ、そのデータは、両方のファイルに順番にあると仮定しますUniqueIDの実装に依存し、次のバージョンでロジックが変更された場合、望ましい結果をフェッチしない可能性があります。

関連する問題