Comment Apache Spark 3.0 améliore les performances de vos charges de travail SQL

Dans pratiquement tous les secteurs qui traitent des données complexes, Spark est rapidement devenu un environnement informatique distribué « de facto » pour les équipes à toutes les étapes du cycle de vie des données et des analyses. L'une des fonctionnalités les plus attendues de Spark 3.0 est le nouveau framework Adaptive Query Execution (AQE), qui résout les problèmes qui surviennent avec de nombreuses charges de travail Spark SQL. Ils ont été documentés début 2018 par une équipe d'experts d'Intel et de Baidu. Pour un examen plus approfondi du framework, vous pouvez suivre notre cours mis à jour Apache Spark Performance Tuning .





Notre expérience avec Workload XM confirme certainement la réalité et la gravité de ces problèmes.





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