2017-05-25 44 views
1

我有一個控制分隔文件,我試圖將其轉換爲實木複合格式。然而在該文件中有一個單一的String場「,在它Spark-Scala格式錯誤的線路問題

閱讀像下面的數據:

val dataframe = sparkSession.sqlContext.read 
       .format("com.databricks.spark.csv") 
       .option("delimiter", datasetDelimiter) 
       .option("header", "false") 
       .option("mode","FAILFAST") 
       //.option("mode", "DROPMALFORMED") 
       .option("treatEmptyValuesAsNulls","true") 
       .option("nullValue"," ") 
       .option("ignoreLeadingWhiteSpace", "true") 
       .option("ignoreTrailingWhiteSpace", "true") 
       .schema(schema) 
       .load(fileLocation) 
       dataframe 

正如你可以看到有隻在數據和沒有封閉的開放式雙引號雙引號,這是導致畸形行例外。在閱讀我已經明確提到的分隔符爲U0001。有什麼辦法來這樣的數據,以鑲轉換,而不會丟失任何數據

+0

我假設這是針對Spark1的? –

+0

爲什麼你使用CSV格式?爲什麼不直接用'text'直接分割線? –

回答

1

您可以設置quote選項空字符串

.option("quote", "") 
// or, equivalently, .option("quote", '\u0000') 

這會告訴Spark將"視爲任何其他非特殊字符。

(使用Spark 2.1.0測試)

+0

我們正在處理幾個文件,並且不可能知道哪些字符不會出現在數據中。 – Mg2729

+0

得到了你 - 結果有更好的選擇 - 查看更新的答案 –

+0

@ Mg2729另外,考慮將「轉義」選項設置爲無問題的東西,否則可能會有其他意外行爲。 –