如何解析Pig中的列以创建其他列

时间:2013-03-06 23:28:34

标签: regex parsing apache-pig

这里有新的Apache Pig用户。我基本上拥有一种格式的数据,需要将其拆分为6列以创建我想要的模式,然后加载到Pig中以运行我现有的脚本。

如果下面的格式不整洁,我很抱歉,由于信誉得分,我无法上传图片。

现有格式有3列
用户设备值:: key:bytearray值:value:bytearray
user1-mobile 20130306-AC 9
user1-mobile 20130306-AT 21
user2-laptop 20130306-BC 0

所需格式:
用户设备日期类型“计数或时间”值

user1 mobile 20130306 A C 9

user1 mobile 20130306 A T 21

有关如何完成此操作的任何建议?我需要写一个正则表达式吗? 这里很棘手的是所有列都有一个分隔符( - ),除了“Type”和列“C或T”

1 个答案:

答案 0 :(得分:0)

如果你没有共同的分隔符,我可以想到两种可能性:

  1. 您可以按照此处的说明实现自己的LoadFunc:http://ofps.oreilly.com/titles/9781449302641/load_and_store_funcs.html

  2. 您可以按照此处的说明使用REGEX_EXTRACT_ALLApache Pig: Extra query parameters from web log

  3. 这里你要去2。:

    A = LOAD 'abc.txt' AS (line:CHARARRAY);
    B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, '^(.+?)\\-(.+?)\\s(.+?)\\-(.)(.)\\s(.+)$')) AS (User:CHARARRAY,Equipment:CHARARRAY,Date:CHARARRAY,Type:CHARARRAY,CountorTime:CHARARRAY,Value:CHARARRAY);