Databricks Certified Data Engineer Professional 無料問題 10 / 10 ・ 分野9: Data Modeling
大きな Delta の表で、ファイルサイズは表の大きさによる自動調整に任せている。表が育って、自動で決まる目標のファイルサイズが 256 MB より大きくなった。ところが OPTIMIZE を流しても、以前に書かれた 256 MB 前後のファイルがそのまま残る。これらも大きなファイルにまとめたい。どうするか。
- delta.autoOptimize.autoCompact を auto にする。auto は表の大きさに合わせて既存のファイルもまとめ直す
- OPTIMIZE を古いパーティションに WHERE で絞って流す。絞った範囲は新しい目標でまとめ直される
- 表のプロパティ delta.targetFileSize に、固定の大きさを設定してから OPTIMIZE を流す
- 自動圧縮の最大の出力のサイズ autoCompact.maxFileSize を上げてから、OPTIMIZE を流し直す
正解と解説を見る
正解: C
正解の理由
Autotune file size based on table size は、Databricks が表の大きさに応じてファイルサイズを自動で調整し、小さい表には小さいファイル、大きい表には大きいファイルを使うと書く(2.56 TB 未満は 256 MB、10 TB 超は 1 GB)。その注記で、目標のファイルサイズが育っても、既存のファイルは OPTIMIZE で大きなファイルにまとめ直されないので、大きな表には目標より小さいファイルがいつも残りうるとしている。それらもまとめたいなら、表のプロパティ targetFileSize で固定の目標を設定する。自動調整は、特定の大きさに設定した表には働かない。
違う選択肢
「delta.autoOptimize.autoCompact を auto にする。auto は表の大きさに合わせて既存のファイルもまとめ直す」… auto は、ほかの自動調整を尊重しながら目標のファイルサイズを調整する設定である。自動圧縮そのものは、書き込みの後にまだ圧縮していないファイルだけをまとめる。以前に書かれたファイルを新しい目標でまとめ直すことはしない。
「OPTIMIZE を古いパーティションに WHERE で絞って流す。絞った範囲は新しい目標でまとめ直される」… 目標のファイルサイズが育っても、既存のファイルは OPTIMIZE で大きなファイルにまとめ直されない。WHERE で範囲を絞っても、この動きは変わらない。まとめ直したいなら、固定の目標を targetFileSize で決める。
「自動圧縮の最大の出力のサイズ autoCompact.maxFileSize を上げてから、OPTIMIZE を流し直す」… autoCompact.maxFileSize は、自動圧縮が書き出すファイルの大きさの設定で、OPTIMIZE の目標を決めるものではない。自動調整のまま目標が育った表で、既存のファイルを OPTIMIZE でまとめ直させるには、targetFileSize で固定の目標を決める。
押さえどころ
固定の目標を決めた表は自動調整の対象から外れるので、表が育っても目標は変わらない。表の育ち方を見て、目標を見直す運用が要る。1 TB を超える表では、自動圧縮や最適化された書き込みに加えて、OPTIMIZE を定期で走らせることが勧められている。
Databricks Certified Data Engineer Professionalの演習アプリ(無料10問・全問は解錠で)へ