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

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

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

    要连接的 JDBC URL。

  2. 数据库表 应读取的 JDBC 表。请注意,任何 在 SQL 查询的 FROM 子句中有效。例如, 除了使用完整的表之外,您还可以使用子查询 括号。

  3. 驱动程序 连接到此所需的 JDBC 驱动程序的类名 网址。这个类之前被加载到master和workers上 运行 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
);

并且,here is a blog了解如何使用 API。

关于jdbc - 使用JDBC数据源时如何将用户名和密码传递给Spark-SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552060/

相关文章:

sql-server - 指定备用数据源后,grails 为嵌入式 h2 抛出 sql 异常

java.sql.SQLRecoverableException : The Network Adapter could not establish the connection

hadoop - 无法在终端中启动 Hive

H2 数据库无法在 Opensuse 12.2 上运行

scala - Spark 在 Hbase 的 InputSplit 期间给出空指针异常

python - 过滤 RDD 中的数据

java - 本地和原始 reposin git 之间没有区别。但是当别人克隆该项目时,在H2DB中找不到该表?

java - Hibernate 中 JTA、JPA 和普通 JDBC 的区别

ssl - IBM DB2 JDBC 通过 SSL 连接到编目数据库

java - MySQL (SELECT) 在 Java 中检索 null