如何忽略Spark Dataframe中从CSV读取输入数据的双引号?

问题描述 投票:0回答:2

我想通过如下所述从csv文件中读取输入来创建Spark数据框(不带双引号)。

enter image description here

这是我的代码,但到目前为止没有用。

val empDF = spark.read.format("com.databricks.spark.csv")
  .option("header", "true")
  .option("inferSchema", "true")
  .option("quote", "\"")
  .option("escape", "\"")
  .load("C:/Users/z011348/Desktop/Spark/EmpWithQuotes.csv")
  .toDF()

我的预期输出不是在输出中添加双引号,但我得到的是垃圾输出。

+---+-----+----------+----+
|eno|ename|      eloc|esal|
+---+-----+----------+----+
| 11|�abx�| �chennai�|1000|
| 22|�abr�|     �hyd�|3000|

谁能帮忙吗?

apache-spark pyspark apache-spark-sql bigdata
2个回答
0
投票

如果您可以使用Spark的默认csv格式而不是com.databricks.spark.csv,则应可以正常工作

spark.read
      .option("header", "true")
      .option("inferSchema", "true")
      .option("quote", "\"")
      .option("escape", "\"")
      .csv("src/main/resources/sample.csv")
      .show()

0
投票

看来它们不是普通的双引号。您可以尝试找到哪个字符并将其转义,或者可以使用子字符串(如果您确信每一行都有引号和尾引号):

empDF.withColumn("ename", substring(col("ename"), 1, length(col("ename"))-2))
© www.soinside.com 2019 - 2024. All rights reserved.