【问题标题】:Spark: Exception in thread "main" org.apache.spark.sql.catalyst.errors.packageSpark:线程“主”org.apache.spark.sql.catalyst.errors.package 中的异常
【发布时间】:2019-12-27 12:44:20
【问题描述】:

在运行我的 spark-submit 代码时,我在执行时收到此错误。

执行连接的 Scala 文件。

我只是想知道这个 TreeNodeException 错误是什么。

为什么会出现这个错误?

请分享您对此 TreeNodeException 错误的想法:

Exception in thread “main” org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree:

【问题讨论】:

  • 我也有同样的问题。
  • 即使我有相同的,这是固定的吗?请回答问题
  • 是否有任何解决方案以及如何解决?

标签: scala apache-spark


【解决方案1】:

好的,所以上面给出的堆栈跟踪不足以理解根本原因,但正如您所提到的,您使用的连接很可能是因为这个原因而发生的。我在加入时遇到了同样的问题,如果您深入了解堆栈跟踪,您会看到类似 -

+- *HashAggregate(keys=[], functions=[partial_count(1)], output=[count#73300L])
+- *Project
+- *BroadcastHashJoin 
...
Caused by: java.util.concurrent.TimeoutException: Futures timed out after [300 seconds]

这提示了它失败的原因,Spark 尝试使用“Broadcast Hash Join”加入,它具有超时和广播大小阈值,其中任何一个都会导致上述错误。根据基础错误修复此问题 -

增加“spark.sql.broadcastTimeout”,默认为300秒-

spark = SparkSession
  .builder
  .appName("AppName")
  .config("spark.sql.broadcastTimeout", "1800")
  .getOrCreate()

或者增加广播阈值,默认是10MB -

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

【讨论】:

    【解决方案2】:

    我在加入数据框时也遇到了这个异常

    Exception in thread “main” org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree:
    

    为了解决这个问题,我只是颠倒了连接的顺序。也就是说,我没有执行 df1.join(df2, on_col="A"),而是执行了 df2.join(df1, on_col="A")。不知道为什么会这样,但我的直觉告诉我,当您使用前一个命令而不是后者时,Spark 必须遵循的逻辑树是混乱的。您可以将其视为 Spark 必须与我的玩具示例中的“A”列进行比较的次数,以连接两个数据框。我知道这不是一个明确的答案,但我希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-31
      • 2021-07-22
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2017-03-24
      • 2018-08-09
      • 2017-11-22
      相关资源
      最近更新 更多