Apache Spark 3.0 が SQL ワークロードのパフォーマンスを向上させる方法

複雑なデータを扱うほぼすべてのセクターで、Spark は、データと分析のライフサイクルのすべての段階で、チームにとって「事実上の」分散コンピューティング環境へと急速に発展しました。Spark 3.0 で最も期待される機能の 1 つは、多くの Spark SQL ワークロードで発生する問題に対処する新しい Adaptive Query Execution (AQE) フレームワークです。これらは、2018 年の初めに Intel と Baidu の専門家のチームによって文書化されました。フレームワークをより深く理解するには、更新されたApache Spark パフォーマンス チューニングコースを受講してください





Workload XM に関する私たちの経験は、これらの問題の現実と深刻さを確かなものにしています。





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