成对的 RDD 中的 Scala 正则表达式

scala regex in a paired RDD

我对 Scala/Eclipse/Spark 中 RDD 操作中的正则表达式有疑问。

我有 2 个已解析的数据文件,并通过成对的 [URL RegexOfURL] 连接在一起形成一个 RDD,它们看起来像

(http://coach.nationalexpress.com/nxbooking/journey-list,
(^https://www\.nationalexpress\.com/bps/confirmation\.cfm\?id=|^https://coach\.nationalexpress\.com/nxbooking/delivery-details))

我希望 运行 一个操作,使每个 URL(第一部分)与正则表达式(第二部分)相匹配。如果 RegEx 匹配,则用 true 标志标记它,否则将其标记为 false

我试过写一个函数:

def operation(s1:RDD[String], s2:RDD[String]) = 
s1 match{
case s2 => 't'
case _ => 'f'
}

但匹配不是我想要的,我想正确使用正则表达式,但遇到了问题。

我还尝试将 RDD 分成每一行并 运行ning 一个函数,但没有成功。您认为最好的方法是什么?

提前致谢

给定输入数据是一个 RDD 对 (string, regex),其中 regexString 形式:RDD[(String,String)] 那么这个转换应该是这样的:

val urlMatchRegexRdd = urlRegexPairsRDD.map{case (url, regex) => url match {
    regex.r(_ *) => ((url, regex), true)
    _ => ((url, regex), false)
}

这将导致 RDD[((String, String),Boolean)] 形式的 RDD 保留原始信息和添加的正则表达式匹配结果。