我正在使用spark 2.1并试图读取csv文件.
Run Code Online (Sandbox Code Playgroud)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(...)
Run Code Online (Sandbox Code Playgroud)
它运作良好.问题是spark read(DataFrameReader)选项键与reference(link)不同.参考说我应该使用'encoding'进行编码但不能正常工作,但charset运行良好.参考是错的吗?
你可以在这里看到:
val charset = parameters.getOrElse("encoding",
parameters.getOrElse("charset",StandardCharsets.UTF_8.name()))
Run Code Online (Sandbox Code Playgroud)
encoding 和 charset 都是有效的选项,在设置编码时使用它们应该没有问题。
当 spark csv 代码来自databricks spark csv project 时,Charset 只是为了遗留支持,该项目自 2.x 以来已合并到 spark 项目中。这也是分隔符(现在是 sep)的来源。
请注意 csv 读取器的默认值,您可以从代码中删除字符集、引号和分隔符,因为您只是使用默认值。简单地留给你:
spark.read.option("header", "true").csv(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15623 次 |
| 最近记录: |