我刚刚开始使用 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 文档中的参数:
网址
要连接的 JDBC URL。
数据库表
应读取的 JDBC 表。请注意,任何 在 SQL 查询的FROM
子句中有效。例如, 除了使用完整的表之外,您还可以使用子查询 括号。驱动程序
连接到此所需的 JDBC 驱动程序的类名 网址。这个类之前被加载到master和workers上 运行 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
);
并且,here is a blog了解如何使用 API。
关于jdbc - 使用JDBC数据源时如何将用户名和密码传递给Spark-SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552060/