2016-04-27 6 views
0

私は豚にタプルを作成しようとしていますが、ファイルの形式は非常に友好的ではありません。PIG - フラットファイルからタプルラインを作成します

File Format: 
Name: Zach 
LastName: Red 
Address: 34 Store Av 
Age: 34 
Name: Brian 
LastName: Curts 
Address: 123 Street Av 
Age: 23 

私はタプルを作成する必要があります。

Name: Zach LastName: Red Address: 34 Store Av Age: 34 
Name: Brian LastName: Curts Address: 123 Street Av Age: 23 
+0

あなたのすべての「行」に4つの要素があることを確かめていますか? –

答えて

0

奇妙な考えですが、動作する可能性があります。私はあなたのすべての要素が4行であると仮定します。それ以外の場合 - それは動作しません。

  1. PigStorage
  2. を使用してファイルをロードし、行ごとRANKフィールドを生成するために、RANK演算子を使用。最初の行は1になり、2行目は2などになります。
  3. 各行について、タイプに基づいて、名前に1、姓に2、住所が3、年齢が4のそれぞれの番号を1-4で生成します。それを 'RecordType'としましょう。
  4. フロア((RANK-1)/ 4)となる別のフィールドを追加してください。名前を 'PersonID'とします。 1人目の場合は0、2つ目の場合は1などとなります。
  5. PersonIDでグループ化すると、同じ人物のすべてのレコードを 'まとめて'取得できます。
  6. ここで、PersonIDを取得すると、すべてのレコードを含むバッグが作成されます。私たちはそれらを並べ替える必要があります。その目的のために使用することができます

    出力= foreach Person { sorted = order PersonRows by RecordType; PersonIDをソートします。 }

  7. はBagToTuple機能

を使用してタプルにバッグを平らにすると完了です。

+0

返事をありがとうございましたが、私はPythonスクリプトを作成しました。私はspark-submitを実行しています。 –

関連する問題