运行我的 Spark-submit 代码时,我在执行时收到此错误。
执行连接的 Scala 文件。
我只是想知道这个 TreeNodeException 错误是什么。
为什么会出现这个错误?
请分享您对此 TreeNodeException 错误的想法:
Exception in thread “main” org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree:
最佳答案
好吧,上面给出的堆栈跟踪不足以理解根本原因,但正如您所提到的,您正在使用联接,很可能因此而发生这种情况。我在加入时遇到了同样的问题,如果你深入堆栈跟踪,你会看到类似的内容 -
+- *HashAggregate(keys=[], functions=[partial_count(1)], output=[count#73300L])
+- *Project
+- *BroadcastHashJoin
...
Caused by: java.util.concurrent.TimeoutException: Futures timed out after [300 seconds]
这给出了失败原因的提示,Spark 尝试使用“广播哈希连接”进行连接,该连接具有超时和广播大小阈值,其中任何一个都会导致上述错误。根据潜在错误修复此问题 -
增加“spark.sql.broadcastTimeout”,默认为 300 秒 -
spark = SparkSession
.builder
.appName("AppName")
.config("spark.sql.broadcastTimeout", "1800")
.getOrCreate()
或者提高广播阈值,默认为10 MB -
spark = SparkSession
.builder
.appName("AppName")
.config("spark.sql.autoBroadcastJoinThreshold", "20485760 ")
.getOrCreate()
或者通过将值设置为 -1 来禁用广播连接
spark = SparkSession
.builder
.appName("AppName")
.config("spark.sql.autoBroadcastJoinThreshold", "-1")
.getOrCreate()
更多详细信息可以在这里找到 - https://spark.apache.org/docs/latest/sql-performance-tuning.html
关于scala - Spark : Exception in thread "main" org. apache.spark.sql.catalyst.errors.package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46930591/