如何在Spark Scala中读取utf-8编码文件

时间:2018-07-26 13:50:59

标签: scala apache-spark utf-8

我正在尝试将utf-8编码文件读入Spark Scala。我正在这样做

val nodes = sparkContext.textFile("nodes.csv")

给定的csv文件位于UTF-8中,但是spark将非英语字符转换为?时,如何读取实际值?我在pyspark中进行了尝试,并且效果很好,因为pyspark的textFile()函数具有编码选项,默认情况下支持utf-8(看来)。

我确定文件是utf-8编码的。我这样做是为了确认

➜  workspace git:(f/playground) ✗ file -I nodes.csv
nodes.csv: text/plain; charset=utf-8

1 个答案:

答案 0 :(得分:1)

使用this post,我们可以先读取文件,然后将其提供给sparkContext

val decoder = Codec.UTF8.decoder.onMalformedInput(CodingErrorAction.IGNORE)
val rdd = sc.parallelize(Source.fromFile(filename)(decoder).getLines().toList)