Hadoop 从猪的一条线中提取

Hadoop 从猪的一条线中提取,hadoop,apache-pig,Hadoop,Apache Pig,我正在尝试按url对数据进行分组。我的数据当前存储在一个长行中。例如。: {手机,国家:美国,网址:1234.com,新用户:y}等 以下是我到目前为止的情况: RAW = LOAD '/data/events/raw/2014-08-21/' as (line:chararray); A = FILTER RAW BY (INDEXOF(line,'mobile') != -1) B = LIMIT A 800; URL = GROUP B BY (INDEXOF(line, 'url'));

我正在尝试按url对数据进行分组。我的数据当前存储在一个长行中。例如。: {手机,国家:美国,网址:1234.com,新用户:y}等

以下是我到目前为止的情况:

RAW = LOAD '/data/events/raw/2014-08-21/' as (line:chararray);
A = FILTER RAW BY (INDEXOF(line,'mobile') != -1)
B = LIMIT A 800;
URL = GROUP B BY (INDEXOF(line, 'url'));
STORE URL INTO '/user/hadoopuser/RS_traffic.txt';
如何从字符串中提取URL以按其分组?我可以使用正则表达式吗?

您可以使用正则表达式提取功能:


您的输入看起来像json,您可以使用JsonStorage尝试或加载。这不是有效的json
RAW = LOAD '/data/events/*' AS (line:chararray);
C = FOREACH RAW GENERATE REGEX_EXTRACT(value, '<your_pattern>', 1) AS url:chararray;
A = FILTER RAW BY (INDEXOF(line,'mobile') != -1)
URL = GROUP C BY url;
....
STORE URL INTO '/user/hadoopuser/RS_traffic.txt';