2016-04-27 63 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。 –