使用 Apache Superset 或 Redash 的 Spark Thrift Server 中的 NullPointerException

问题描述

在将诸如 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 之间的一些不兼容性(例如 thisthis)。 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 (将#修改为@)