尝试从pyspark连接到配置单元时找不到JdbcStorageHandler

时间:2019-06-28 11:04:52

标签: apache-spark jdbc hive pyspark

我正在尝试从HDP中的spark查询配置单元表

我正在按照这里的说明进行操作:

https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/integrating-hive/content/hive_hivewarehouseconnector_for_handling_apache_spark_data.html

我正在启动pyspark sehll,它将附加配置单元仓库连接器组装jar和相关的py文件。

我在上一个链接上正确设置了配置属性(--conf spark.sql.hive.hiveserver2.jdbc.url,spark.sql.hive.hiveserver2.jdbc.url.principal等) 当我尝试对Hive表进行简单选择时,出现以下错误:

  

原因:java.lang.ClassNotFoundException:org.apache.hive.storage.jdbc.JdbcStorageHandler

所以我寻找了包含JdbcStorageHandler的JAR,并且还附加了:

 --jars /usr/hdp/current/hive-client/lib/hive-jdbc-handler.jar

但是我仍然遇到相同的错误,找不到JdbcStorageHandler。

我尝试过的另一件事是将所有hadoop客户端和hive客户端jar添加到类路径:

output = subprocess.check_output(['bash','-c', 'echo $CLASSPATH:$(hadoop classpath):/usr/hdp/current/hadoop-client/*:/usr/hdp/current/spark2-client/jars/*:/usr/hdp/current/hadoop-client/client/*'])
os.environ['CLASSPATH'] = output

编辑:在Hive外壳程序中,我创建了一个指向PostgreSQL数据库的Hive外部表,我知道它内部使用的是JdbcStorageHandler类,因此我可以确认Hive外壳程序在同一jar中正确使用了该类。

有事吗?

谢谢

0 个答案:

没有答案