Cómo Apache Spark 3.0 mejora el rendimiento de sus cargas de trabajo SQL

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








All Articles