我以CSV數據使用下面的代碼當前正在閱讀:星火CSV閱讀援引NUMERICS
Dataset<Row> dataset = getSparkSession().read()
.option("header", "true")
.option("quote", '"')
.option("sep", ',')
.schema(schema)
.csv(path)
.toDF();
被引導到具有這個樣子行的CSV文件:
"abc","city","123"
爲以及具有如下行的另一個文件:
"abc","city",123
第二個工作正常,因爲我傳遞的模式是
string, string, long
的第一個結果java.lang.NumberFormatException: For input string: "123"
是否有可能爲CSV讀者正確讀取兩種有效格式的CSV?假設選項已通過。
我使用星火2.1.1
不幸的是,那是我的錯誤。我沒有在我的實際代碼中使用字符。我從我的模式創建類中檢索參數,它將字符串轉換爲字符而不是字符(爲了簡單起見,我不小心使用了'''''而不是'「\」「'。可能是Cloudera的Spark2版本和Java 2.1.1 maven版本的區別 – DeeVu
@DeeVu不,那不是 - 我只是修改了我的build.sbt以使用2.1.1,我的單元測試仍然是綠色的。你是如何定義你的模式的? –
好的。你說得對,這是一個模式問題。我的demoset試圖將我的100列中的一列轉換爲小數時的整數。我可以放心地說我正在把我的頭撞在我的桌子上。 – DeeVu