0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DatabricksテーブルデータのCSVダウンロード

Last updated at Posted at 2024-10-17

Databricksで管理されているテーブルをcsvファイルとしてダウンロードするには、いくつかのアプローチがあります。手軽なのはSQLエディタからダウンロードですが、ファイルサイズが大きい場合はボリュームを用いたダウンロードを実施してください。

SQLエディタからダウンロード

こちらの手順です。

制限

  • 最大約 1 GB の結果データを CSV および TSV 形式でダウンロードし、最大 100,000 行を Excel ファイルにダウンロードできます。
  • 1 GB の制限は、最終的なファイルのダウンロードよりも前のステップに適用されるため、最終的なファイルのダウンロード サイズは 1 GB よりわずかに多い場合もあれば小さい場合もあります。
  • ダウンロードできない場合は、ワークスペース管理者がワークスペースにおけるダウンロード機能を無効にしています。管理者にお問い合わせください。

カタログエクスプローラでダウンロードしたいテーブルにアクセスします。

Screenshot 2024-10-17 at 9.33.01.png

右上の作成 > クエリーをクリックします。

Screenshot 2024-10-17 at 9.33.12.png

テーブルのデータを取得するSQLが表示されます。

Screenshot 2024-10-17 at 9.39.41.png

この時点では、1000行しか取得されていません。実行ボタンの右にある下向き矢印をクリックし、LIMIT 1000のチェックを外します。

Screenshot 2024-10-17 at 9.38.13.png
Screenshot 2024-10-17 at 9.39.06.png

再度実行ボタンをクリックします。今度は全件が取得されています。

Screenshot 2024-10-17 at 9.40.48.png

この結果をダウンロードするには、未設定の結果右にある下向き矢印をクリックします。

Screenshot 2024-10-17 at 9.40.48.png

ここでは、CSVをダウンロードを選択します。

Screenshot 2024-10-17 at 9.41.56.png

全データを含むCSVファイルがダウンロードされます。

Screenshot 2024-10-17 at 9.43.07.png
Screenshot 2024-10-17 at 9.43.53.png

ボリュームを用いたダウンロード

上の制限に該当する大規模なファイルの場合、こちらのアプローチが必要となります。以下の手順を踏みます。

  1. テーブルをSparkデータフレームに読み込み
  2. Sparkデータフレームをpandasデータフレームに変換
  3. pandasデータフレームをcsvファイルとしてボリュームに保存
  4. csvファイルをダウンロード

ノートブックを作成し、クラスターにアタッチします。

以下を実行します。テーブルやボリュームのパスは適宜変更してください。

# Spark DataFrameを読み込む
sdf = spark.table("users.takaaki_yayoi.covid_cases")
# Spark DataFrameをPandas DataFrameに変換
pdf = sdf.toPandas()
# Pandas DataFrameをCSVファイルとして保存
pdf.to_csv("/Volumes/users/takaaki_yayoi/data/covid_cases.csv")

ボリューム上にcsvファイルが作成されています。

Screenshot 2024-10-17 at 9.53.10.png

ファイルの右にあるケバブメニューをクリックし、ファイルをダウンロードを選択します。

Screenshot 2024-10-17 at 9.54.17.png

これで、csvファイルとしてダウンロードできます。

Screenshot 2024-10-17 at 9.55.02.png

toPandasでエラーになってしまう場合

pandasデータフレームは全てをメモリに載せるので、メモリサイズを超えるデータをデータフレームにしようとするとエラーになります。その場合には、pandasデータフレームを使用せずSparkデータフレームからcsvに直接書き出します。しかし、Sparkデータフレームは分散ファイルシステムを前提としているので、そのまま書き出すとフォルダ配下に複数のファイルが作成されてしまいます。これを避けるために以下のコードを実行します。coalesceでパーティションを1にし、単一のcsvファイルが作成されるようにします。

# Spark DataFrameを読み込む
sdf = spark.table("users.takaaki_yayoi.covid_cases")
# Spark DataFrameをCSVファイルとして保存
sdf.coalesce(1).write.mode("overwrite").option("header", "true").csv("/Volumes/users/takaaki_yayoi/data/covid_cases")

ボリュームには指定されたフォルダ配下にファイルが作成されています。part-00000-で始まるファイルがcsvファイルです。こちらをダウンロードします。

Screenshot 2024-10-17 at 11.39.12.png

Screenshot 2024-10-17 at 11.40.31.png

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?