如何使用Spark JDBC解决编码问题?

问题描述 投票:0回答:1

我在Oracle中有一个表,其中有一些俄语记录。

当我使用Spark JDBC读取此表时,收到的数据帧的值不正确。

您知道为什么会这样以及如何解决吗?

// executes given query using jdbc
  def executeQuery(spark: SparkSession, configuration: Map[String, String], sql_statement: String): DataFrame
  = spark.read.format("jdbc")
    .option("driver", "oracle.jdbc.OracleDriver")
    .option("url", s"jdbc:oracle:thin:@//${configuration("address")}")
    .option("user", configuration("username"))
    .option("password", configuration("password"))
    .option("dbtable", s"(${sql_statement})")
    .option("fetchSize", configuration("fetch_size"))
    .load()

enter image description here

enter image description here

oracle apache-spark jdbc
1个回答
0
投票

在jdbc连接中,您需要设置.option("encoding", "UTF-8")("characterEncoding", "UTF-8"),以确保我们在读取数据时使用UTF8字符集。这应确保您能够正确阅读俄语字符。

© www.soinside.com 2019 - 2024. All rights reserved.