我正在尝试将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
答案 0 :(得分:1)
使用this post,我们可以先读取文件,然后将其提供给sparkContext
val decoder = Codec.UTF8.decoder.onMalformedInput(CodingErrorAction.IGNORE)
val rdd = sc.parallelize(Source.fromFile(filename)(decoder).getLines().toList)