2017-02-01 55 views
0

我正在用spark scala讀取分隔文本文件。我正在嘗試爲分隔符之前的所有內容以及後面的所有內容創建正則表達式。目前,我已經將所有空間都修剪掉了。我正在尋找關於如何完成此項改進的任何建議。也許某種修剪功能會更簡單。正則表達式來修剪分隔符前後的所有空格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 

回答

2

最簡單的方法很可能是由您的分隔符(~),然後trim分割每個結果令牌;另外

rdd.map(_.split("~").map(_.trim).mkString("~")) 

- 使用正則表達式: - 然後使用令牌結合mkString回成一個字符串

rdd.map(_.replaceAll("\\s*?~\\s*", "~")) 
相關問題