Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop/Pig正则表达式匹配_Hadoop_Mapreduce_Hdfs - Fatal编程技术网

Hadoop/Pig正则表达式匹配

Hadoop/Pig正则表达式匹配,hadoop,mapreduce,hdfs,Hadoop,Mapreduce,Hdfs,这是一种奇怪的情况,但我正在寻找一种方法,使用类似匹配的东西进行过滤,但要在未知模式(长度未知)列表中进行过滤 也就是说,如果给定的输入是两个文件,一个带有数字A: xxxx yyyy zzzz zzyy ……等等 另一个是模式B: xx* yyy* ……等等 如何根据第二个输入中的所有模式过滤第一个输入 如果我事先知道所有的模式,我可以 A=筛选依据(num匹配'somepattern.*'或num匹配'someotherpattern'…) 问题是我事先不知道它们,因为它们是模式而不是简单的

这是一种奇怪的情况,但我正在寻找一种方法,使用类似匹配的东西进行过滤,但要在未知模式(长度未知)列表中进行过滤

也就是说,如果给定的输入是两个文件,一个带有数字A:

xxxx

yyyy

zzzz

zzyy

……等等

另一个是模式B:

xx*

yyy*

……等等

如何根据第二个输入中的所有模式过滤第一个输入

如果我事先知道所有的模式,我可以 A=筛选依据(num匹配'somepattern.*'或num匹配'someotherpattern'…)

问题是我事先不知道它们,因为它们是模式而不是简单的字符串,所以我不能只使用连接/组(至少就我所知)。 也许是一个奇怪的嵌套的FOREACH…东西?
有什么想法吗?

如果您使用作为
操作的
,您可以从各个模式中构建一个模式

(xx.*|yyy.*|zzzz.*)
这将检查它是否匹配任何模式

(xx.*|yyy.*|zzzz.*)
编辑: 要创建组合正则表达式模式:
*创建一个以
开头的字符串(

*读入每一行(假设每一行都是一个模式),并将其附加到一个字符串中,后跟一个

*读取完行后,删除最后一个字符(这将是不必要的
|

*附加一个


这将创建一个regex模式来检查输入文件中的所有模式。(注意:假定文件包含有效的模式)

如何通过编程实现?正如我所说,我事先不知道这些模式有多少(或者它们的内容)。@Subsvn:用logicSo更新了帖子,所以用straight Pig无法做到这一点?@Subsvn:我不熟悉Pig,所以我不能具体说明如何实现解决方案。你可能想检查一下,看看这是否有助于为你指明一个有用的方向。啊,这就是问题所在:猪似乎相当不完整。不幸的是,我有点拘束于此。。。