0

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

抱歉,如果以下格式不整洁,由于声誉评分,我无法上传图片。

现有格式有 3 列
User-Equipment values::key:bytearray values:value:bytearray
user1-mobile 20130306-AC 9
user1-mobile 20130306-AT 21
user2-laptop 20130306-BC 0

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

user1 手机 20130306 AC 9

user1 手机 20130306 AT 21

关于如何完成这项工作的任何建议?我需要写一个正则表达式吗?这里的棘手之处在于,除了“类型”和“C 或 T”列之外,所有列之间都有一个分隔符 (-)

4

1 回答 1

0

如果您没有通用分隔符,我可以想到两种可能性:

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

  2. 您可以按照此处的说明使用REGEX_EXTRACT_ALLApache Pig:来自网络日志的额外查询参数

给你 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);
于 2013-03-07T10:23:32.053 回答