【问题标题】:How to pass username and password to Spark-SQL when using JDBC data source?使用 JDBC 数据源时如何将用户名和密码传递给 Spark-SQL?
【发布时间】:2015-08-13 15:31:54
【问题描述】:

我刚开始使用 Spark-SQL 从 H2 数据库加载数据,这是我按照 Spark-SQL 文档所做的:

>>> sqlContext = SQLContext(sc)
>>> df = sqlContext.load(source="jdbc",driver="org.h2.Driver", url="jdbc:h2:~/test", dbtable="RAWVECTOR")

但是它不起作用并给出错误,我认为问题是函数中没有指定用户名和密码。

这是来自 Spark-SQL 1.3.1 的文档中的参数:

  1. url

    要连接的 JDBC URL。

  2. dbtable 应该读取的 JDBC 表。请注意,任何 在 SQL 查询的FROM 子句中有效。例如, 而不是一个完整的表,你也可以使用一个子查询 括号。

  3. driver 连接到此所需的 JDBC 驱动程序的类名 网址。这个类在之前加载到master和worker上 运行 JDBC 命令以允许驱动程序向其注册自身 JDBC 子系统。

  4. partitionColumnlowerBoundupperBoundnumPartitions

    如果指定了其中任何一个选项,则必须全部指定这些选项。他们描述了从多个工作人员并行读取时如何对表进行分区。 partitionColumn 必须是相关表中的数字列。

但是我没有找到任何线索如何将数据库用户名和密码传递给 sqlContext.load 函数。 谁有类似的案例或线索?

谢谢。

【问题讨论】:

  • 我想通了。只是做>>>df = sqlContext.load(source="jdbc",driver="org.h2.Driver", url="jdbc:h2:tcp://localhost/~/test?user=sa&password=1234" , dbtable="RAWVECTOR"),当你创建数据库时,使用相同的模式: conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/"+dbName+"?user=sa&password=1234", null, null);//jdbc:h2:mem:db1

标签: jdbc apache-spark h2 apache-spark-sql


【解决方案1】:

我想通了。做吧

df = sqlContext.load(
  source="jdbc",driver="org.h2.Driver",
  url="jdbc:h2:tcp://localhost/~/test?user=sa&password=1234",
  dbtable="RAWVECTOR"
)

当你创建数据库时,使用相同的模式:

conn = DriverManager.getConnection(
  "jdbc:h2:tcp://localhost/~/"+dbName+"?user=sa&password=1234", null, null
);

还有,here is a blog 关于如何使用 API。

【讨论】:

猜你喜欢
  • 2020-02-15
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
相关资源
最近更新 更多