当启用AQE断断续续的NullPointerException

当启用自适应查询执行(AQE)时,和集群规模下降,失去洗牌数据,你可以得到一个NullPointerException的错误。

写的mathan.pillai

去年发表在:2022年5月23日

问题

你得到一个断断续续的NullPointerException误差在保存您的数据。

Py4JJavaError:调用o2892.save时发生一个错误。:. lang。org.apache.spark.sql.execution.adaptive.OptimizeSkewedJoin NullPointerException。anonfun getMapSizesForReduceId美元1美元(OptimizeSkewedJoin.scala: 167) org.apache.spark.sql.execution.adaptive.OptimizeSkewedJoin。anonfun getMapSizesForReduceId美元$ 1 $改编(OptimizeSkewedJoin.scala: 167) scala.collection.TraversableLike。anonfun地图1美元美元(TraversableLike.scala: 238) scala.collection.IndexedSeqOptimized.foreach (IndexedSeqOptimized.scala: 36) ....在sun.reflect.DelegatingMethodAccessorImpl.invoke sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 62) (DelegatingMethodAccessorImpl.java: 43) java.lang.reflect.Method.invoke (Method.java: 498) py4j.reflection.MethodInvoker.invoke (MethodInvoker.java: 244) py4j.reflection.ReflectionEngine.invoke (ReflectionEngine.java: 380) py4j.Gateway.invoke (Gateway.java: 295) py4j.commands.AbstractCommand.invokeMethod (AbstractCommand.java: 132) py4j.commands.CallCommand.execute (CallCommand.java: 79) py4j.GatewayConnection.run (GatewayConnection.java: 251) java.lang.Thread.run (Thread.java: 748)

导致

这个错误可能发生如果自适应查询执行(AQE) (AWS|Azure和你加入数据启用)。如果启用了AQE,斜加入也启用。

如果任何的洗牌数据失败由于集群事件时,它会生成一个按比例缩小NullPointerException错误。

解决方案

spark.sql.adaptive.skewJoin.enabled在你的火花配置(AWS|Azure)。

这篇文章有用吗?