首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLException:找不到适合jdbc的驱动程序:菲尼克斯:(主机)

SQLException:找不到适合jdbc的驱动程序:菲尼克斯:(主机)
EN

Stack Overflow用户
提问于 2022-05-11 18:18:17
回答 1查看 184关注 0票数 0

我正在运行一个submit命令,它将通过Scala类执行一些数据库工作。

代码语言:javascript
复制
spark-submit 
--verbose 
--class mycompany.MyClass 
--conf spark.driver.extraJavaOptions=-Dconfig.resource=dev-test.conf 
--conf spark.executor.extraJavaOptions=-Dconfig.resource=dev-test.conf 
--master yarn 
--driver-library-path /usr/lib/hadoop-lzo/lib/native/ 
--jars /home/hadoop/mydir/dbp.spark-utils-1.1.0-SNAPSHOT.jar,/usr/lib/phoenix/phoenix-client-hbase-2.4-5.1.2.jar,/usr/lib/hadoop-lzo/lib/hadoop-lzo.jar,/usr/lib/hadoop/lib/commons-compress-1.18.jar,/usr/lib/hadoop/hadoop-aws-3.2.1-amzn-5.jar,/usr/share/aws/aws-java-sdk/aws-java-sdk-bundle-1.12.31.jar 
--files /home/hadoop/mydir/dev-test.conf 
--num-executors 1 
--executor-memory 3g 
--driver-memory 3g 
--queue default /home/hadoop/mydir/dbp.spark-utils-1.1.0-SNAPSHOT.jar
<<args to MyClass>>

当我跑的时候,我得到了一个例外:

代码语言:javascript
复制
Caused by: java.sql.SQLException: No suitable driver found for jdbc:phoenix:host1,host2,host3:2181:/hbase;
   at java.sql.DriverManager.getConnection(DriverManager.java:689)
   at java.sql.DriverManager.getConnection(DriverManager.java:208)
   at org.apache.phoenix.util.QueryUtil.getConnection(QueryUtil.java:422)
   at org.apache.phoenix.util.QueryUtil.getConnection(QueryUtil.java:414)

下面是Scala代码的相关部分:

代码语言:javascript
复制
    val conf: SerializableHadoopConfiguration =
        new SerializableHadoopConfiguration(sc.hadoopConfiguration)
    Class.forName("org.apache.phoenix.jdbc.PhoenixDriver")
    val tableRowKeyPairs: RDD[(Cell, ImmutableBytesWritable)] =
        df.rdd.mapPartitions(partition => {
            val configuration = conf.get()
            val partitionConn: JavaConnection = QueryUtil.getConnection(configuration)
            // ...
        }

我的spark-submit命令包括使用--jars参数的/usr/lib/phoenix/phoenix-client-hbase-2.4-5.1.2.jar。当我在该文件中搜索"org.apache.phoenix.jdbc.PhoenixDriver“时,我发现它:

代码语言:javascript
复制
$ jar -tf /usr/lib/phoenix/phoenix-client-hbase-2.4-5.1.2.jar | grep -i driver
...
org/apache/phoenix/jdbc/PhoenixDriver.class
...

所以为什么我的程序找不到驱动程序?

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 13:28:55

通过向问题中所示的spark-submit命令添加以下参数,我能够让程序找到驱动程序:

代码语言:javascript
复制
--conf "spark.executor.extraClassPath=/usr/lib/phoenix/phoenix-client-hbase-2.4-5.1.2.jar" 

这个StackOverflow article对各种论点做了很好的解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72205839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档