複雑なデータを扱うほぼすべてのセクターで、Spark は、データと分析のライフサイクルのすべての段階で、チームにとって「事実上の」分散コンピューティング環境へと急速に発展しました。Spark 3.0 で最も期待される機能の 1 つは、多くの Spark SQL ワークロードで発生する問題に対処する新しい Adaptive Query Execution (AQE) フレームワークです。これらは、2018 年の初めに Intel と Baidu の専門家のチームによって文書化されました。フレームワークをより深く理解するには、更新されたApache Spark パフォーマンス チューニングコースを受講してください。
Workload XM に関する私たちの経験は、これらの問題の現実と深刻さを確かなものにしています。
AQE Spark 2.4, Spark 3.0 3.1 . , , AQE.
Catalyst
, , group-by-count DataFrames.
Spark , " " - 200.
:
1. 200 , , ;
2. , 200 ;
3. : , .
? :
spark.conf.set(“spark.sql.shuffle.partitions”,”2″)
:
.
.
.
, Spark . , , , - : .
Adaptive Query Execution
AQE , . , « », .
Catalyst , , .
AQE Spark Catalyst, Spark " ".
? , :
, Spark , .
Spark , Spark , , .
AQE , Spark 2.4.
, spark.sql.adaptive.enabled true, - false. AQE , 200 .
TPC-DS AQE:
Sort Merge Joins Broadcast Joins
AQE sort-merge broadcast -, broadcast -.
TPC-DS AQE:
shuffle
, , - .
:
· spark.sql.adaptive.enabled
· spark.sql.adaptive.coalescePartitions.enabled
true, Spark , spark.sql.adaptive.advisoryPartitionSizeInBytes. , .
Skew () - . :
, , .
skew join, , A0 , , park.sql.adaptive.advisoryPartitionSizeInBytes, B0 B.
, AQE .
:
1. spark.sql.adaptive.skewJoin.skewedPartitionFactor : , , , , , ,
2. spark.sql.adaptive.skewedPartitionThresholdInBytes, : , .
(dynamic partition pruning, DPP) - : , . DPP, AQE . DPP Spark 2.4 CDP.
, .
1. .
2. , , .
DPP (, SortMergeJoin), spark.sql.optimizer.dynamicPartitionPruning.reuseBroadcastOnly.
Spark , DPP .
DPP , , 5 .
, 72 99 TPC-DS DPP.
Spark : .
- : Spark RDD, DataFrames.
SQL, - , : , .
AQE, DPP, Kubernetes , Spark 3.1