【问题标题】:Spark Read CSV doesn't preserve the double quotes while readingSpark Read CSV 在阅读时不保留双引号
【发布时间】:2020-12-13 08:32:05
【问题描述】:

我正在尝试读取一列带有双引号的 csv 文件,如下所示。

James,Butt,"Benton, John B Jr",6649 N Blue Gum St
Josephine,Darakjy,"Chanay, Jeffrey A Esq",4 B Blue Ridge Blvd
Art,Venere,"Chemel, James L Cpa",8 W Cerritos Ave #54
Lenna,Paprocki,Feltz Printing Service,639 Main St,Anchorage
Donette,Foller,Printing Dimensions,34 Center St,Hamilton
Simona,Morasca,"Chapman, Ross E Esq",3 Mcauley Dr

我正在使用以下代码将双引号保留为 csv 文件中的内容。(有双引号的行很少,没有双引号)

 val df_usdata    = spark.read.format("com.databricks.spark.csv")//
.option("header","true")//
.option("quote","\"")//
.load("file:///E://data//csvdata.csv")
df_usdata.show(false)

但它没有保留数据框中的双引号,但它应该保留。 .option("quote",""") 不起作用。我使用的是 Spark 2.3.1 版本。

输出应该如下所示。

+----------+---------+-------------------------+---------------------+
|first_name|last_name|company_name             |address              |
+----------+---------+-------------------------+---------------------+
|James     |Butt     |"Benton, John B Jr"      |6649 N Blue Gum St   |
|Josephine |Darakjy  |"Chanay, Jeffrey A Esq"  |4 B Blue Ridge Blvd  |
|Art       |Venere   |"Chemel, James L Cpa"    |8 W Cerritos Ave #54 |
|Lenna     |Paprocki |Feltz Printing Service   |639 Main St          |
|Donette   |Foller   |Printing Dimensions      |34 Center St         |
|Simona    |Morasca  |"Chapman, Ross E Esq"    |3 Mcauley Dr         |
+----------+---------+-------------------------+---------------------+

【问题讨论】:

  • 如果你设置了.option("quote","\""),那么spark将不会保留"
  • 那么,保留 " (双引号)的解决方案是什么。我尝试了 .option("quote","") 和 .option("quote","\u0000") 。他们确实保留了引号,但由于逗号分隔符,列值已被拆分到下一列。您可以看到以下结果。

标签: apache-spark-sql


【解决方案1】:

改用空引号.option("quote","")

val df_usdata = spark.read.format("com.databricks.spark.csv")//
.option("header","true")//
.option("quote","")//
.load("file:///E://data//csvdata.csv")
df_usdata.show(false)

【讨论】:

  • 感谢杰伊的回复!它尝试使用 .option("quote","")//。但是列值拆分为下一个列,如下所示。 |詹姆斯 |巴特 |“Benton | John B Jr” | |约瑟芬 |Darakjy |“Chanay | Jeffrey A Esq”| |艺术 |Venere |"Chemel | James L Cpa" |
【解决方案2】:

当我尝试使用 .option("quote","") 时,company_name 列值被拆分为如下所示的下一列。

+----------+---------+-------------------------+---------------------+
|first_name|last_name|company_name             |address              |
+----------+---------+-------------------------+---------------------+
|James     |Butt     |"Benton                  | John B Jr"          |
|Josephine |Darakjy  |"Chanay                  | Jeffrey A Esq"      |
|Art       |Venere   |"Chemel                  | James L Cpa"        |
|Lenna     |Paprocki |Feltz Printing Service   |639 Main St          |
|Donette   |Foller   |Printing Dimensions      |34 Center St         |
|Simona    |Morasca  |"Chapman                 | Ross E Esq"         |
+----------+---------+-------------------------+---------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 2021-01-21
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2021-09-28
    • 2018-05-25
    相关资源
    最近更新 更多