【问题标题】:Encoding option in Spark JDBCSpark JDBC 中的编码选项
【发布时间】:2021-06-24 18:22:45
【问题描述】:

我想使用 Spark JDBC 以特定字符集编码(如 us-ascii)从 Oracle DB 读取数据,但我无法做到。

我按照answer尝试的代码:

val res=spark.read.format("jdbc")
  .option("url", url)
  .option("user", "userid")
  .option("password", "pwd")
  .option("driver","oracle.jdbc.OracleDriver")
  .option("encoding", "us-ascii")
  .option("characterEncoding", "us-ascii")
  .option("query", tableQuery).option("fetchsize","10000")
  .load()

这总是以utf-8 编码返回数据。

有没有办法做到这一点?

【问题讨论】:

标签: oracle apache-spark jdbc encoding apache-spark-sql


【解决方案1】:

根据 Oracle 文档“JDBC 驱动程序透明地执行所有字符集转换。无需用户干预即可进行转换”。

Oracle JDBC 驱动似乎不支持连接参数 characterEncoding 或 encoding。

您可以尝试以下步骤以更好地了解问题

  1. 验证编码是否适用于 Spark - 将数据提取到具有相同编码的分隔文件中,并通过提供编码详细信息来读取文件,然后显示数据帧
  2. 确保在 Oracle 数据库中使用正确的编码 - Oracle JDBC 驱动程序用于执行 Java 应用程序的字符集转换,以依赖于数据库使用的字符集,等效的 Oracle 字符集名称是 US7ASCII。

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2019-01-23
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多