hadoop - 从 PIG 包中提取元组

标签 hadoop hdfs apache-pig

文件内容(test.txt):

Some    specific    column      value: x192.168.1.2     blah       blah
Some    specific    row        value: y192.168.1.3      blah       blah
Some    specific    field      value: z192.168.1.4     blah      blah

pig 查询:

A = LOAD 'test.txt' USING PigStorage('\t') AS (data1: chararray , data2: chararray , data3: chararray, data4: chararray , data5: chararray , data6: chararray);

B = foreach A generate data3, data4;

C = filter B by data3 matches 'row';

D = foreach C generate data4;

E = foreach D generate TOKENIZE(data4);

输出:

((value:), (y192.168.1.3))

现在我想在这个输出包中提取特定的元组,比如第二个元组 (y192.168.1.3)。 在此之后我想提取IP地址。我正在尝试使用 UDF,但卡住了。

最佳答案

这是我会做的。

pig 脚本

A = LOAD 'test.txt' USING PigStorage('\t') AS (data1: chararray , data2: chararray , data3: chararray, data4: chararray , data5: chararray , data6: chararray);
B = foreach A generate data3, data4;
C = filter B by data3 matches 'row';
D = foreach C generate data4;
E = foreach D generate REGEX_EXTRACT($0,'value: .([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+).*', 1);

输出

(192.168.1.3)

如果需要,您可以使用更疯狂的正则表达式来提取 IP 地址:Extract ip addresses from Strings using regex

关于hadoop - 从 PIG 包中提取元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9816592/

相关文章:

hadoop - 我们能否从 Hue 获得与 "hadoop fsck"相同的指标?

hadoop - 是否有任何 API 可以在给定文件路径的情况下按顺序获取文件的 blockIds?

hadoop - 创建一个 HIVE 表并将其保存到一个制表符分隔的文件中?

Hadoop - 多输入

apache-pig - Pig 本地模式、组或连接 = java.lang.OutOfMemoryError : Java heap space

hadoop - 按部门名称划分的女性员工的 reducer 代码

hadoop - Hadoop 2.6.0 eclipse插件

hadoop - pig HBASE 失败;存储 CSV

hadoop - 在hdfs中实现不同的分发模型?

hadoop - 如何使用 pig 脚本从网络爬网数据中提取特定数据(nutch)