regex - Regex_Extract使用PIG

标签 regex hadoop count apache-pig

我正在使用PIG在一组记录中查找字符串,然后输出文件名(使用UDF追加到每条记录的末尾)和匹配字符串的计数。文件名如下所示2015-03-04.23_55_05.Abhi_Ram.Info.json。

以下是我的 pig 脚本:

REGISTER UDF;

input_data= LOAD 'input_dir' using classname();

record_match = FILTER input_data by $0 matches '$Search_string';

group_record = GROUP record_match ALL;

record_count = FOREACH record_match GENERATE REGEX_EXTRACT($0,'((\\d{4}-\\d{2}-\\d{2})\\.(\\d.*)\.(\\w.*)\\.(\\w.*)\\.(json))',1), COUNT(record_match);

dump record_count;

我想输出

2015-03-04.23_55_05.Abhi_Ram.Info.json, count($Search_string).



我在正则表达式中缺少什么吗?

最佳答案

我不明白为什么要从源代码中将正则表达式应用于第一个字段。您的第一个字段是否具有文件名模式?因为,

$ 0->表示连续的第一条记录。

然后,如果要将源文件名包含在输出记录中,简单的方法是

read = LOAD 'inp.data' USING PigStorage(',','-tagsource');

它将源文件名附加到记录开始处。
2015-03-04.23_55_05.Abhi_Ram.Info.json, count($Search_string)

根据您的问题,REGEX_EXTRACT为:
read = load 'test.data' using PigStorage(',');
date = foreach read generate FLATTEN(REGEX_EXTRACT($0,'(\\d{4})-(\\d{2})-(\\d{2}).(\\d{2})_(\\d{2})_(\\d{2}).(\\w.*)_(\\w.*).(\\w.*).json',0)) as      (filename_dt:chararray);
dump date;

关于regex - Regex_Extract使用PIG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884044/

相关文章:

Jquery选择器: Count element with attribute on the second tr

android - 计算返回 null 的解析用户数

ios - iOS如何在一个巨大的字符串的2个字符串之间找到多个字符串?

python - 根据有趣单词的字典从电子邮件列表中识别最常见的单词

java - 如何检查字符串是否包含小写字母、大写字母、特殊字符和数字?

hadoop - 在 Hive 中编写带有 where 子句的嵌套 select 语句

java - 如何定义正则表达式以从 Java 字符串中删除文本屏蔽的垃圾邮件链接 ("spam1 dot com")?

hadoop - 通过 '1 Click Installer'更新Community Edition中的各个CDH组件

hadoop - hadoop如何存储区 block ?

计算一个单词在文件中出现的次数