Di hampir setiap sektor yang berhubungan dengan data kompleks, Spark dengan cepat menjadi lingkungan komputasi terdistribusi “de facto” untuk tim di semua tahap siklus hidup data dan analitik. Salah satu fitur Spark 3.0 yang paling diantisipasi adalah kerangka kerja Adaptive Query Execution (AQE) baru, yang mengatasi masalah yang muncul dengan banyak beban kerja Spark SQL. Mereka didokumentasikan pada awal 2018 oleh tim ahli Intel dan Baidu. Untuk melihat kerangka kerja lebih dalam, Anda dapat mengikuti kursus Penyetelan Kinerja Apache Spark kami yang telah diperbarui .
Pengalaman kami dengan Workload XM tentu saja menegaskan kenyataan dan tingkat keparahan masalah ini.
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