Spark - csv读取选项

时间:2017-07-21 02:09:49

标签: apache-spark

我正在使用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运行良好。参考是错的吗?

1 个答案:

答案 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(...)