Databricks Certified Data Engineer Associate 無料問題 9 / 10 ・ 分野6: Troubleshooting, Monitoring, and Optimization
リキッドクラスタリングの表 shipments(Unity Catalog の管理表)のクラスタリングキーを、ALTER TABLE shipments CLUSTER BY (region, ship_date) で付け替えた。表の行はどれも 2020 年以降の ship_date を持つ。Databricks Runtime 17.3 LTS のジョブで、付け替える前から入っていた行も含めて、新しいキーで並べ直したい。どうするか。
- ALTER TABLE shipments CLUSTER BY NONE で外して付け直し、続く OPTIMIZE shipments に既存の行を並べ直させる
- OPTIMIZE shipments FULL WHERE region IN ('EU', 'US', 'APAC') を流し、全地域の行を並べ直させる
- OPTIMIZE shipments FULL WHERE ship_date >= '2020-01-01' を流し、全期間の行を新しいキーで並べ直させる
- OPTIMIZE shipments FULL を流し、付け替える前からある行も含めて、範囲の条件を付けずに表の行をまとめて新しいキーで並べ直させる
正解と解説を見る
正解: D
正解の理由
クラスタリングキーを付け替えても、既存のデータは書き直されない。すべての行を新しいキーで並べ直させるのが OPTIMIZE ... FULL で、Databricks Runtime 16.4 LTS 以上で使える。17.3 LTS のジョブなので、OPTIMIZE shipments FULL を流せばよい。
違う選択肢
「OPTIMIZE shipments FULL WHERE ship_date >= '2020-01-01' を流し、全期間の行を新しいキーで並べ直させる」… 一部の行を指定して並べ直す OPTIMIZE ... FULL WHERE は、公式が "In Databricks Runtime 18.1 and above" と書く機能である。17.3 LTS のジョブでは使えない。
「OPTIMIZE shipments FULL WHERE region IN ('EU', 'US', 'APAC') を流し、全地域の行を並べ直させる」… 条件を地域にしても、FULL WHERE を使う点は同じで、Databricks Runtime 18.1 以上の機能である。17.3 LTS のジョブでは使えない。
「ALTER TABLE shipments CLUSTER BY NONE で外して付け直し、続く OPTIMIZE shipments に既存の行を並べ直させる」… 公式は "When you change clustering keys, subsequent OPTIMIZE and write operations use the new clustering approach, but existing data is not rewritten." と書いている。NONE についても "Setting cluster keys to NONE does not rewrite clustered data" で、外して付け直しても既存の行は書き直されない。その後の FULL を付けない OPTIMIZE でも、付け替える前からある行は新しいキーで並ばない。
つまずき方
大きな表で、指定したキーでまだ並べていないデータに OPTIMIZE ... FULL を流すと、何時間もかかることがある。キーを付け替えたら、ジョブの時間の見積もりにこの並べ直しを入れておく。
Databricks Certified Data Engineer Associateの演習アプリ(無料10問・全問は解錠で)へ