我在Docker容器(sequenceiq/spark)上运行Spark 我这样推出了它:
docker run --link dbHost:dbHost -v my/path/to/postgres/jar:postgres/ -it -h sandbox sequenceiq/spark:1.6.0 bash
我确信可以通过地址postgresql://user:password@localhost:5432/ticketapp
访问postgreSQL数据库。
我用spark-shell --jars postgres/postgresql-9.4-1205.jdbc42.jar
启动spark-shell,因为我可以从我的Play连接!具有依赖性"org.postgresql" % "postgresql" % "9.4-1205-jdbc42"
的应用程序似乎我有正确的jar。 (我也没有任何警告说当地的罐子不存在。)
但是当我尝试使用以下命令连接到我的数据库时
val jdbcDF = sqlContext.read.format("jdbc").options(
Map("url" -> "jdbc:postgresql://dbHost:5432/ticketapp?user=user&password=password",
"dbtable" -> "events")
).load()
(我也尝试了网址jdbc:postgresql://user:root@dbHost:5432/ticketapp
)
正如在spark文档中解释的那样,我收到此错误: java.sql.SQLException:没有为jdbc找到合适的驱动程序:postgresql:// dbHost:5432 / ticketapp?user = simon& password = root
我做错了什么?
答案 0 :(得分:0)
据我所知,您需要在spark类路径中为特定数据库包含JDBC驱动程序。根据文档(https://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases),应该这样做:
SPARK_CLASSPATH=postgresql-9.3-1102-jdbc41.jar bin/spark-shell