我是从R语言背景转到Spark和Scala的新手。在对RDD进行一些转换之后,我得到了一个类型为
Description: RDD[(String, Int)]
现在我想在String RDD上应用正则表达式,从字符串中提取子字符串并将子字符串仅添加到新列中。
输入数据:
BMW 1er Model,278
MINI Cooper Model,248
我需要的输出结果:
Input | Brand | Series
BMW 1er Model,278, BMW , 1er
MINI Cooper Model ,248 MINI , Cooper
品牌和系列是从字符串RDD中新计算出的子字符串。
目前为止,我已经使用正则表达式对一个字符串进行了操作,但是我不能将其应用于所有行。
val brandRegEx = """^.*[Bb][Mm][Ww]+|.[Mm][Ii][Nn][Ii]+.*$""".r //to look for BMW or MINI
那么我可以使用
brandRegEx.findFirstIn("hello this mini is bmW testing")
但是我该如何对RDD的所有行使用它,并应用不同的正则表达式以实现上述输出呢?
我阅读了这个代码片段,但不确定如何将其整合在一起。
val brandRegEx = """^.*[Bb][Mm][Ww]+|.[Mm][Ii][Nn][Ii]+.*$""".r
def getBrand(Col4: String) : String = Col4 match {
case brandRegEx(str) =>
case _ => ""
return 'substring
}
任何帮助都将不胜感激!
谢谢。