2016-04-27 57 views
0

我試圖創建豬一個元組的元組線,但是文件的格式並不多友善:豬 - 創建一個從平面文件

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等。
  3. 對於每一行,根據其類型生成另一個數字,1-4之間:名稱爲1,姓氏爲2,地址爲3,年齡爲4。我們稱之爲'RecordType'
  4. 添加另一個字段,它將是FLOOR((RANK-1)/ 4)。將其命名爲'PersonID'。對於第一個人將是0,對於第二個將是1,等等。
  5. 現在,您可以按PersonID進行分組,以獲取同一個人的所有記錄「在一起」。
  6. 現在,對於每個人,您將獲得PersonID,以及一個包含所有記錄的包。我們需要讓他們排序。爲此目的,您可以使用

    output = foreach Person {0}通過RecordType訂購PersonRows; 生成PersonID,排序; }

  7. 拼合包成一個元組使用BagToTuple功能

就大功告成了。

+0

謝謝你們回覆它,但我創建了一個Python腳本,並且我正在運行spark-submit。 –