En prácticamente todos los sectores que se ocupan de datos complejos, Spark se ha convertido rápidamente en un entorno informático distribuido "de facto" para equipos en todas las etapas del ciclo de vida de datos y análisis. Una de las características más esperadas de Spark 3.0 es el nuevo marco Adaptive Query Execution (AQE), que aborda los problemas que surgen con muchas cargas de trabajo Spark SQL. Fueron documentados a principios de 2018 por un equipo de expertos de Intel y Baidu. Para una mirada más profunda al marco, puede tomar nuestro curso actualizado de Apache Spark Performance Tuning .
Nuestra experiencia con Workload XM ciertamente confirma la realidad y la gravedad de estos problemas.
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