我正在使用spark scala读取带分隔符的文本文件。我试图在分隔符之前为所有内容创建一个正则表达式修剪,以及之后的所有内容。目前,我有它修剪所有空间的地方。我正在寻找有关如何实现这一目标或改进的任何建议。也许某种修剪功能会更简单。
def truncateRDD(fileName : String): RDD[String] = {
val rdd = sc.textFile(fileName)
rdd.map(lines => lines.replaceAll("""[\t\p{Zs}]+""", ""))
}
输入:
20161111 ~ ~10~1234~ "This is an example" ~P15~-EXAMPLE~2017~ 2014567EXAMPLE
期望的输出:
20161111~~10~1234~"This is an example"~P15~-EXAMPLE~2017~2014567EXAMPLE
答案 0 :(得分:2)
最简单的方法可能是用分隔符(~
)分割,然后用trim
分割每个结果标记;然后 - 使用mkString
:
rdd.map(_.split("~").map(_.trim).mkString("~"))
或者 - 使用正则表达式:
rdd.map(_.replaceAll("\\s*?~\\s*", "~"))