Bagaimana Apache Spark 3.0 meningkatkan kinerja beban kerja SQL Anda

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








All Articles