Juh*_*han 1 csv scala dataframe apache-spark
我正在读取由管道(|)分隔的文件。有双引号的字段在读取数据和将数据写入另一个文件时会出现问题。输入文件如下。
123|"ABC"|hello
124|"AB|hello all
125|A"B"|hellll
Run Code Online (Sandbox Code Playgroud)
代码如下。
val myDf = session.sqlContext.read.format("csv")
.option("charset", "UTF8")
.option("inferSchema", "true")
.option("quote","\u0000")
.schema(mySchema)
.option("delimiter", "|")
.option("nullValue", "")
.option("treatEmptyValuesAsNulls", "true")
.load("path to file")
Run Code Online (Sandbox Code Playgroud)
当我做 myDf.show() 在控制台中正确显示输出时。但是当我将相同的数据帧写入 CSV 文件时,所有双引号都被替换为\".
myDf.repartition(1).write
.format("com.databricks.spark.csv")
.option("delimiter", "|")
.save("Path to save file")
Run Code Online (Sandbox Code Playgroud)
在 csv 文件中输出:
123|"\"ABC\""|hello
124|"\"AB"|hello all
125|"A\"B\""|hellll
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,有什么方法可以像下面预期的那样获得 csv。
123|"ABC"|hello
124|"AB|hello all
125|A"B"|hellll
Run Code Online (Sandbox Code Playgroud)
可以通过禁用转义和引用来完成
myDf.repartition(1).write
.format("com.databricks.spark.csv")
.option("escape", "")
.option("quote", "")
.option("delimiter", "|")
.save("Path to save file")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5298 次 |
| 最近记录: |