2

在将 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 元存储
  • 启动 Spark Thriftserver 的 Spark Cluster:(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,但没有任何影响。)
  • Redash / Apache Superset 连接到 STS
4

0 回答 0