【问题标题】:Spark - Strange characters when reading CSV fileSpark - 读取 CSV 文件时出现奇怪的字符
【发布时间】:2019-12-05 23:04:29
【问题描述】:

我希望有人可以帮助我。我的问题如下:

要在 Spark 中读取 CSV 文件,我使用的是代码

val df=spark.read.option("header","true").option("inferSchema","true").csv("/home/user/Documents/filename.csv")

假设我的文件名为filename.csv,路径为/home/user/Documents/

显示我使用的前 10 个结果

df.show(10)

但我得到了以下结果,其中包含字符 �,并且没有按需要显示 10 个结果

scala> df.show(10)
+--------+---------+---------+-----------------+                                
|     c1|      c2|      c3|              c4|
+--------+---------+---------+-----------------+
|��1.0|5450|3007|20160101|
+--------+---------+---------+-----------------+

CSV 文件看起来像这样

c1  c2      c3     c4

1   5450    3007    20160101

2   2156    1414    20160107

1   78229   3656    20160309

1   34963   4484    20160104

1   7897    3350    20160105

11  13247   3242    20160303

2   4957    3350    20160124

1   73083   4211    20160207

我要读取的文件很大。当我尝试较小的文件时,我没有得到奇怪的字符,我可以毫无问题地看到前 10 个结果。

感谢任何帮助。

【问题讨论】:

  • spark的默认字符集编码是UTF-8,你确定你的csv文件编码是UTF-8吗?
  • 嗯好吧,显然我的文件的编码是 UTF-16。我会尝试改变它(如果可能的话)然后再试一次
  • 您可能还想将trim 应用于您的数据。例如,当您在 Excel 中打开 CSV 时,奇怪的字符可能会被塞进 CSV。
  • 我无法将文件转换为 UTF-8。当我试图重新保存它时,它足以让 LibreOffice 和 Notepadqq 崩溃。无论如何感谢您的帮助!

标签: csv apache-spark


【解决方案1】:

有时不是Spark的设置问题。尝试将您的 CSV 文件重新保存(另存为)为“CSV UTF-8(逗号分隔)”,然后重新运行您的代码,奇怪的字符就会消失。我在读取一些包含德语单词的 CSV 文件时遇到了类似的问题,然后我在上面做了,一切都很好。

【讨论】:

    猜你喜欢
    • 2021-04-16
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多