処理済みデータをテーブルに書き込む
メニューを表示するにはスワイプしてください
データの書き込みは、クラスターの一時メモリからCatalogの永続ストレージへDataFrameを移動するプロセス。saveAsTable()メソッドを使用することで、クリーンアップおよび集約済みの結果が保存され、他のユーザーやツールからもアクセス可能となる。
これまでの作業はすべて「インメモリ」で実行されている。今クラスターの電源を切ると、変換済みのDataFrameは消失する。作業内容を永続化するには、データをLakehouseに書き戻す必要がある。Databricksでは、DataFrameをDelta Tableとして保存するのが標準的な方法。
saveAsTable() の構文
作業内容を保存するには、DataFrameにwriteメソッドをチェーンする。最も直接的な方法は次の通り。
# Save the 'summary_df' we created earlier as a permanent table
summary_df.write.mode("overwrite").saveAsTable("workspace.default.diamonds_summary”)
- write: DataFrameの書き込みインターフェースへのアクセス
- mode("overwrite"): 同名のテーブルが既に存在する場合の動作を指定。"overwrite" は既存データを新しいデータで置き換える。他のオプションとして "append"(既存テーブルの末尾に新しい行を追加)がある。
- saveAsTable: データを保存する三部構成名(
catalog.schema.table)を指定。
Delta Lake:デフォルトフォーマット
saveAsTable を使用すると、Databricksはデータを自動的にDeltaフォーマットで保存する。セクション1で説明した通り、Delta Lakeは信頼性を提供する。"write"操作の途中でクラスターがクラッシュしても、テーブルが破損しないことを保証する。また、"Time Travel" 機能により、誤操作時にテーブルの過去バージョンを参照できる。
カタログでの書き込みの確認
コマンドの実行が完了したら、データが正しく格納されているかを確認:
- 左側サイドバーの Catalog タブに移動;
mainカタログとdefaultスキーマにドリルダウン;- 新しいテーブル名(例:
regional_summary)を探す; - テーブルをクリックすると、スキーマ、サンプルデータ、作成日時や作成者などのメタデータを確認可能。
保存済みテーブルの読み込み
テーブルがカタログに登録されると、権限のあるユーザーはノートブックなしでアクセス可能。SQLクエリを実行するか、spark.table() を使って自身の環境にロードできる:
# In a new notebook, anyone can now access your processed data
new_df = spark.table("main.default.regional_summary")
ベストプラクティス:クリーンアップ
最終結果を永続テーブルに保存した後は、クラスターを終了するか、少なくとも「状態のクリア」を行うことがプロフェッショナルな習慣です。データはすでにカタログに安全に保存されているため、一時的なDataFrameをクラスターのRAMに保持しておく必要はありません。
1. 既存のテーブルをDataFrameの新しいデータで置き換えたい場合、どの「mode」を使用すべきですか?
2. saveAsTable() を使用してDataFrameを保存する主な利点は何ですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください