spark读取具有非UTF-8编码的wholeTextFiles

Geo*_*ler 1 character-encoding apache-spark apache-spark-sql

我想通过非UTF-8编码读取整个文本文件

val df = spark.sparkContext.wholeTextFiles(path, 12).toDF
Run Code Online (Sandbox Code Playgroud)

变成火花.如何更改编码?我想读取ISO-8859编码的文本,但它不是CSV,它类似于xml:SGML.

编辑

也许应该使用自定义Hadoop文件输入格式?

Dan*_*ez 6

您可以使用SparkContext.binaryFiles()相反的方式读取文件,并String为指定所需字符集的内容构建内容.例如:

val df = spark.sparkContext.binaryFiles(path, 12)
  .mapValues(content => new String(content.toArray(), StandardCharsets.ISO_8859_1))
  .toDF
Run Code Online (Sandbox Code Playgroud)