使用JDBC数据源时如何将用户名和密码传递给Spark-SQL?

How to pass username and password to Spark-SQL when using JDBC data source?

我刚开始使用 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

    要连接的JDBCURL。

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

  3. driver class 需要连接到此的 JDBC 驱动程序的名称 URL。这个 class 之前被加载到 master 和 workers 上 运行 一个 JDBC 命令允许驱动程序注册自己 JDBC 子系统。

  4. partitionColumnlowerBoundupperBoundnumPartitions

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

但我没有找到任何线索如何将数据库用户名和密码传递给 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
);

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