概要
Azure Synapse Apache Spark Poolsにて、Delta Lake形式のテーブルにおけるファイル数を最適化するOptimizeの実行する方法として、Optimizeを利用できるようです。ドキュメント等では確認できないのですが、ライブラリの中をみていたところ、偶然にもみつけました。
from delta import *
help(DeltaTable.optimize)
Delta lake形式のテーブルでは、データを追加することによりファイル数が増大することから、ファイルの圧縮の実施が推奨されております。delta lakeのドキュメントでは、すべてのデータを読み取り再パーティション後に書き込む方法が紹介されています。
path = "..."
numFiles = 16
(spark.read
.format("delta")
.load(path)
.repartition(numFiles)
.write
.option("dataChange", "false")
.format("delta")
.mode("overwrite")
.save(path))
引用元:Best practices — Delta Lake Documentation
Optimizeを利用することで、下記のようなシンプルなコードの記載のみでよくなります。
DeltaTable.forName(spark, {table_name}).optimize()