使用 jdbc 从 Spark 2.3.1 Scala 2.11.8 连接到 Vertica
Connect to Vertica from Spark 2.3.1 Scala 2.11.8 with jdbc
我正在尝试使用 jdbc.
连接到带有 Spark v2.3.1 Scala 2.11.8 的 Vertica dB
在 Vertica 网站上:https://www.vertica.com/blog/whats-new-vertica-8-1-connector-apache-spark/
它说我可以在以下位置下载 Spark Connector:https://my.vertica.com/download/vertica/8-1-x/
当我点击 link 时,它会将我带到登录页面,在我通过登录后,顶部会弹出一个黄色框,提示我没有权限查看下载。
我尝试了另一条路线,这次是从 Vertica 的下载页面下载。 Linux包下有3个jar文件(vertica-javadoc、vertica-jdbc、vertica-jdbc-8.0.1-0),但是找不到Vertica-Spark Connector (即:vertica-8.1.0_spark2.0_scala2.11.jar)。我下载了 3 个 jar。
在我的 Scala Eclipse IDE 中,我加载了 3 个 jar 文件(vertica-javadoc、vertica-jdbc、vertica-jdbc-8.0.1-0),以及使用以下脚本连接到 Vertica:
val url = "jdbc:vertica//hostname/DBName?username=username&password=pw"
val query = "SELECT * FROM TABLE;"
val df = spark.read.format("jdbc")
.option("driver", "com.vertica.jdbc.Driver")
.option("url", url)
.option("dbtable", query)
.load()
并得到以下错误:
Exception in thread "main" java.lang.NullPointerException
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:70)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:115)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:52)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:340)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:239)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:227)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
at att.com.vert2$.main(vert2.scala:37)
at att.com.vert2.main(vert2.scala)
我在这里做错了什么?我是否缺少 Vertica-Spark 连接器?如果是连接器,我可以从哪里下载它?
干杯。
我发现了问题。
问题出在语法中:
val url = "jdbc:vertica//hostname/DBName?username=username&password=pw"
vertica 和 // 之间缺少一个 :(冒号)。
从用户名更改为用户。
并在主机名后添加端口号。
工作语法是:
val url = "jdbc:vertica://hostname:Port/DBName?user=youruser&password=yourpassword"
我正在尝试使用 jdbc.
连接到带有 Spark v2.3.1 Scala 2.11.8 的 Vertica dB在 Vertica 网站上:https://www.vertica.com/blog/whats-new-vertica-8-1-connector-apache-spark/
它说我可以在以下位置下载 Spark Connector:https://my.vertica.com/download/vertica/8-1-x/
当我点击 link 时,它会将我带到登录页面,在我通过登录后,顶部会弹出一个黄色框,提示我没有权限查看下载。
我尝试了另一条路线,这次是从 Vertica 的下载页面下载。 Linux包下有3个jar文件(vertica-javadoc、vertica-jdbc、vertica-jdbc-8.0.1-0),但是找不到Vertica-Spark Connector (即:vertica-8.1.0_spark2.0_scala2.11.jar)。我下载了 3 个 jar。
在我的 Scala Eclipse IDE 中,我加载了 3 个 jar 文件(vertica-javadoc、vertica-jdbc、vertica-jdbc-8.0.1-0),以及使用以下脚本连接到 Vertica:
val url = "jdbc:vertica//hostname/DBName?username=username&password=pw"
val query = "SELECT * FROM TABLE;"
val df = spark.read.format("jdbc")
.option("driver", "com.vertica.jdbc.Driver")
.option("url", url)
.option("dbtable", query)
.load()
并得到以下错误:
Exception in thread "main" java.lang.NullPointerException
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:70)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:115)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:52)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:340)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:239)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:227)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
at att.com.vert2$.main(vert2.scala:37)
at att.com.vert2.main(vert2.scala)
我在这里做错了什么?我是否缺少 Vertica-Spark 连接器?如果是连接器,我可以从哪里下载它?
干杯。
我发现了问题。
问题出在语法中:
val url = "jdbc:vertica//hostname/DBName?username=username&password=pw"
vertica 和 // 之间缺少一个 :(冒号)。 从用户名更改为用户。 并在主机名后添加端口号。
工作语法是:
val url = "jdbc:vertica://hostname:Port/DBName?user=youruser&password=yourpassword"