hadoop - 从 pig 的生产线中提取

标签 hadoop apache-pig

我正在尝试按网址对数据进行分组。我的数据当前存储在一行中。例如。:
{“mobile”,“country:US”,“url:1234.com”,“newuser: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以便对其进行分组?我可以使用正则表达式吗?

最佳答案

您可以使用REGEX_EXTRACT()函数:

REGEX_EXTRACT Javadoc

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';

关于hadoop - 从 pig 的生产线中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557792/

相关文章:

scala - 使用 spark-shell 安装包 Graphframes

hadoop - Pig 命令问题 'Failed to read data from "/pigdata/student"'

java - Apache Pig 处理 CSV,字段用引号括起来

python - 如何: Python UDF dictionary return schema in PIG

hadoop - Cloudera manager - hadoop安装失败

unix - 在 UNIX 中的特定列中搜索匹配模式的行

hadoop - Map Reduce 输出到 CSV 还是我需要键值?

具有数百万条记录插入的 Hadoop 后端

hadoop - pig : field does not exist after join

hadoop - 计算 PIG 列中值的频率?