我正在使用spark 2.1并试图读取csv文件。
compile group: 'org.scala-lang', name: 'scala-library', version: '2.11.1' compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.1.0'
这是我的代码。
import java.io.{BufferedWriter, File, FileWriter}
import java.sql.{Connection, DriverManager}
import net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy
import org.apache.spark.sql.{DataFrame, SparkSession, Column, SQLContext}
import org.apache.spark.sql.functions._
import org.postgresql.jdbc.PgConnection
spark.read
.option("charset", "utf-8")
.option("header", "true")
.option("quote", "\"")
.option("delimiter", ",")
.csv(...)
效果很好。问题是spark read(DataFrameReader)选项键与引用(link)不同。参考说我应该使用'encoding'进行编码但不能正常工作,但charset运行良好。参考是错的吗?
答案 0 :(得分:3)
您可以看到here:
val charset = parameters.getOrElse("encoding",
parameters.getOrElse("charset",StandardCharsets.UTF_8.name()))
encoding和charset都是有效的选项,在设置编码时你应该没有问题。
当火花csv代码来自databricks spark csv project时,Charset就可以获得遗留支持,该代码自2.x起已合并到spark项目中。这也是分隔符(现在是sep)的来源。
请注意csv阅读器的默认值,您可以从代码中删除charset,quote和delimiter,因为您只使用默认值。简单地离开你:
spark.read.option("header", "true").csv(...)