scala - Spark : Exception in thread "main" org. apache.spark.sql.catalyst.errors.package

标签 scala apache-spark

运行我的 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/

相关文章:

scala - 根据spark数据帧scala中的列值过滤行

apache-spark - Pyspark:如何从 Spark 数据框中过滤 10000 个随机元素

apache-spark - 在指定日期运行 Airflow 作业

java - 将 JavaRDD<ArrayList<T>> 转换为 JavaRDD<T>

scala - 将变量强制转换为 Scala 中的方法 "Runtime Evaluation"

scala:构造函数区分应用和隐式参数吗?

scala - Intellij ScalaTest with Mockito,测试框架意外退出

java - scala 中的 cogroup 两个 RDD

maven - java.lang.NoSuchMethodError : org. apache.hadoop.conf.Configuration.reloadExistingConfigurations()V

apache-spark - Spark SQL 中的增量更新