Big Data-Spark SQLパフォーマンスの最適化

Spark SQLパフォーマンスの最適化

1.メモリ内のキャッシュテーブルのデータ

Scalaコード
spark-shell --master spark://hadoop1:7077 --jars /root/temp/mysql-connector-java-8.0.13.jar --driver-class-path /root/temp/mysql-connector-java-8.0.13.jar
val mysql = spark.read.format("jdbc").option("user","destiny").option("password","destiny").option("url","jdbc:mysql://192.168.138.1:3306/data?serverTimezone=GMT%2B8").option("dbtable","employee").load
mysql.createOrReplaceTempView("employee")
spark.sqlContext.cacheTable("employee")
spark.sql("select * from employee").show

その結果
ここに画像の説明を挿入

第二に、パフォーマンス最適化関連のパラメーター

(1)メモリ内のデータキャッシュ用に最適化されたパラメーター

spark.sql.inMemoryColumnarStorage,compressed

デフォルトはtrueです

Spark SQLは、統計情報に基づいて各列のYassoエンコード方式を自動的に選択します

spark.sql.inMemoryColumnarStorage.batchSize

デフォルトは10000です。

キャッシュバッチサイズ。データをキャッシュするとき、バッチサイズを大きくすると、メモリ使用率と圧縮率が向上しますが、COM(メモリ不足)のリスクもあります。

(2)その他のパフォーマンス関連の構成オプション(手動での変更は推奨されません)

spark.sql.files.maxPartitionBytes

デフォルトで128MB

ファイルを読み取るときに単一のパーティションが保持できる最大バイト数

spark.sql.files.openCostInBytes

デフォルトは4Mです

ファイルを開くための推定コストは、同時にスキャンできるバイト数で測定されます。パーティションに複数のファイルを書き込むときに使用されます。過大評価が優れているため、小さなファイルパーティションは大きなファイルパーティションよりも高速になります。

spark.sql.autoBroadcastJoinThreshold

デフォルトは10Mです

結合操作の実行時にテーブルがすべてのワーカーノードにブロードキャストできる最大バイトサイズを構成するために使用されます。この値を-1に設定すると、ブロードキャストを無効にすることができます。現在のデータ統計は、ANALYZE TABLE COMPUTE STATISTICE noscanコマンドを実行したHive Metastoreテーブルのみをサポートすることに注意してください

spark.sql.shuffle.partitions

デフォルトは200です。

結合または集計操作でデータをシャッフルするときに使用されるパーティションの数を構成するために使用されます

131件の元の記事を公開 12 件を獲得 60,000回の閲覧+

おすすめ

転載: blog.csdn.net/JavaDestiny/article/details/97493636
おすすめ