【发布时间】: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 的文档中的参数:
-
url要连接的 JDBC URL。
dbtable应该读取的 JDBC 表。请注意,任何 在 SQL 查询的FROM子句中有效。例如, 而不是一个完整的表,你也可以使用一个子查询 括号。driver连接到此所需的 JDBC 驱动程序的类名 网址。这个类在之前加载到master和worker上 运行 JDBC 命令以允许驱动程序向其注册自身 JDBC 子系统。-
partitionColumn、lowerBound、upperBound、numPartitions如果指定了其中任何一个选项,则必须全部指定这些选项。他们描述了从多个工作人员并行读取时如何对表进行分区。 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