Apache Spark 读取 UTF-16 CSV 文件

dat*_*ack 6 scala apache-spark apache-spark-sql spark-dataframe databricks

我正在尝试读取以 UTF-16 编码的 CSV 文件。

val test = spark.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema", "true")
.option("delimiter",";")
.option("dateFormat", "yyyy-MM-dd HH:mm:ss.SSS")
.option("encoding", "UTF-16")
.option("charset", "ISO-8859-1")
.load("...")
Run Code Online (Sandbox Code Playgroud)

结果我得到了额外的行:

在此处输入图片说明

Spark 是否可能只能使用 UTF-8 编码?或者还有其他方法可以将 UTF-16 CSV 读入数据帧?

Nik*_*iya 1

我在尝试读取 UTF-16 格式的 csv 文件时也遇到了类似的问题。

我使用的是 mac,我不知道我正在读取的 csv 文件的编码是什么。最初,我在读取文件时没有提供任何编码选项,它给了我两个“?” 在列名称前面。

因此,尝试在我的 mac 中使用以下命令找出我正在读取的 csv 文件的编码。

file -I yourFile
Run Code Online (Sandbox Code Playgroud)

该命令的输出显示文件的编码是charset=utf-16le

现在我正在通过提供此选项来读取文件,并且它工作正常。

val df = spark.read.
            format("csv").
            option("quote", "\"").
            option("escape", "\\").
            option("multiLine", "true").
            option("inferSchema", "true").
            option("header","true").
            option("encoding", "UTF-16").
            load(sourceS3path)
Run Code Online (Sandbox Code Playgroud)

如果只是读取UTF-16文件,则无需提供字符集选项。