我已经通过spark/hive部署设置了对外部关系存储(postgresql)的访问。我可以通过hive/beeline读取这个表,但是当我尝试通过sparksql/pyspark3jupyter笔记本读取时,它失败了,因为它找不到 JdbcStorageHandler
. 我试着用几种方法添加合适的jar,但是我在所有方面都遇到了相同的堆栈跟踪——有没有关于我需要什么jar和版本的建议,以及我应该把它放在哪里,这样才能工作?堆栈跟踪:
java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.org.apache.hive.storage.jdbc.JdbcStorageHandler
..
..
java.lang.ClassNotFoundException: org.apache.hive.storage.jdbc.JdbcStorageHandler
在让hive/beeline工作方面:我按照jdbc存储处理程序文档中的描述做了。我在执行此操作时遇到了一些jar依赖性问题,但通过添加 hive-jdbc-2.0.0.jar
, postgresql-42.2.12.jar
jar在启动beeline之后,现在可以从beeline直接成功地从关系存储中读取数据。
我尝试过的一些事情:
添加上面列出的jar spark.jars.packages
在notebook sparkmagic配置单元中,jdbc 2.0.0安装得很干净,但会产生上述错误。我也尝试了HiveJDBC3.1.0,但是它出错了,没有安装。我对如何评估兼容性有点困惑,可能会分散我的注意力。
直接在集群上启动spark sql, add
hive-jdbc-2.0.0.jar(成功)。相同的堆栈跟踪。
在集群创建期间跨集群添加apache配置单元库(配置单元jdbc和postgres驱动程序)
看看其他人 /usr/hdp
对于hivejdbc,有多种版本(在zeppelin、spark2、oozie、hivehcatalog、hive、ranger admin下面)。
环境详情:
在azure hdinsight上运行
spark 2.4(hdi 4.0)
暂无答案!
目前还没有任何答案,快来回答吧!