Spark Jdbc 连接 JDBCOptions

Posted

技术标签:

【中文标题】Spark Jdbc 连接 JDBCOptions【英文标题】:Spark Jdbc connection JDBCOptions 【发布时间】:2018-02-26 20:52:03 【问题描述】:

我正在尝试使用 Spark JdbcUtils 中的可保存方法

https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala

该方法的定义如下。它接受 JDBCOptions 作为参数之一。

def saveTable(
      df: DataFrame,
      tableSchema: Option[StructType],
      isCaseSensitive: Boolean,
      options: JDBCOptions)

下面是JDBCOptions的类

https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JDBCOptions.scala

当我使用 url、事务隔离级别等初始化 JDBCOptions 时,它会引发错误。

您能否提供有关初始化 JDBCOptions 的见解

 val options :JDBCOptions = Map("url" -> "JDBCUrl")
Error Type Map doesnt conform to be JDBCOption Type

如何用正确的类型初始化?

【问题讨论】:

提供错误信息会有所帮助。 @AydinK。我不知道如何初始化它? 看看这里:docs.databricks.com/spark/latest/data-sources/… 或者在这里(“将 Jdbc 运行到其他数据库”一章):spark.apache.org/docs/latest/… @AydinK。我看着他们。他们正在使用选项,但我正在使用 JDBCOptions。两者都不一样。 【参考方案1】:

您需要将地图包装在 new JDBCOptions(...) 调用中

// url and dbtable are required
val options:JDBCOptions = new JDBCOptions(Map("url" -> "JDBCUrl", "dbtable" -> "foo"))

【讨论】:

以上是关于Spark Jdbc 连接 JDBCOptions的主要内容,如果未能解决你的问题,请参考以下文章

Spark jdbc 重用连接

通过 Spark 的 Hive JDBC 连接(Nullpointer 异常)

将 jdbc 连接传递给 spark 读取

Spark集群模式下的Impala JDBC连接问题

从 Spark 到 Oracle 服务器的 JDBC 连接

如何使用Spark执行MySQL(JDBC)连接?