我正在尝试从HDP中的spark查询配置单元表
我正在按照这里的说明进行操作:
我正在启动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中正确使用了该类。
有事吗?
谢谢