问题描述
在将诸如 Redash 或 Superset 之类的 BI 工具连接到 Spark Thriftserver(这两个工具都使用 PyHive)后,我收到了 NullPointerException。 Apache Zeppelin 适用于使用 STS 的查询,我永远无法在那里重现错误(Zeppelin 使用 org.apache.hive.jdbc.HiveDriver)。
DB engine Error
hive error: ('Query error','Error running query: java.lang.NullPointerException')
这会将 STS 发送到只有重启才能恢复的状态。来自所有客户端的查询都将失败(Zeppelin、beeline、Redash、Superset)。它似乎主要发生在自动获取模式时(这不太有效,正确获取了数据库名称,表名错误)。在浏览 PyHive 代码时,我遇到了 PyHive STS 之间的一些不兼容性(例如 this 和 this)。 Redash/Superset 和 STS 之间的连接有效,我可以进行查询,直到 Thriftserver 进入损坏状态。
我明白为什么架构刷新不起作用(并且可能能够解决它),但我不明白为什么 Thriftserver 进入一个不可恢复的、损坏的状态,并出现 NullPointerException。
我的设置:
- Kubernetes
- Delta Lake,数据格式为 delta
- Hive metastore
- 启动 Spark Thriftserver 的 Spark 集群:
start-thriftserver.sh --total-executor-cores 3 --driver-memory 3G --executor-memory 1536M --hiveconf hive.server2.thrift.port 10000 --hiveconf hive.server2.thrift.max.worker.threads 2000 --hiveconf hive.server2.thrift.bind.host my-host
(我也试过spark.sql.thriftServer.incrementalCollect=false
,但没有任何影响。) - 连接到 STS 的 Redash / Apache Superset
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)