●背景
業務にてDatabricksを今後使うことになった。Databricks notebookにてデータをPySparkで加工してローカルにCSVダウンロードする流れをまとめてみた。
やり方は様々かと思うが、データ加工してCSVにダウンロードする簡易的な手順の一つをまとめる。
同時に、PySparkにてデータ加工する際に参照するリファレンスの読み解き方も解説する。
●参考URL
●流れ全体像
- Databricks UI上でnotebookを開く
- 指定のデータをDataFrameとして読み込む
- PySparkにてデータを加工
- 使えるメソッドはリファレンスから調査
- UI上でローカルダウンロード
●調べて分かった前提知識
Databricksにおいてはsparkのセッションなどを起動する必要が無い。あらかじめ、sparkオブジェクトが用意されているためこちらを使用すれば良い。
通常のSparkでは以下の通り明示的に立ち上げる必要があるようだ
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("MyApp") \
.config("spark.sql.shuffle.partitions", 8) \
.getOrCreate()
●作業の流れ
①Databricks UI上でnotebookを開く
New > Notebook
②notebookにpythonコードを書き、テーブルをDataFrame形式で読み込む
df = spark.sql("SELECT * FROM samples.nyctaxi.trips")
display(df)
14日の無料トライアルにて実施している。あらかじめ用意されているサンプルテーブルをSQL形式で抽出するやり方となっている。
※display()というメソッドはDatabricks独自もの
The display() method is specific to Databricks notebooks and provides a richer visualization.
参考
②PySparkにてデータ加工
result = df.drop("pickup_zip")
result.display()
ここではdrop()というメソッドにてpickup_zipというカラムの削除を行ってみた。
drop()にあたるメソッドとして何が使えるのかはリファレンスを読み解くことで調査することとなる。
リファレンスの読み解き方は後ほど解説する。
③加工したものをローカルにダウンロード
ダウンロードボタンを押すだけで簡単にダウンロードできる。
※最大5GBという制約がありそう。
●【参考】PySparkリファレンスの読み解き方
PySparkにて使えるメソッドの調べ方を解説する。これを理解するとやりたいことを生成AIに頼らず実現しやすくなると考える。筆者一個人の考え方を紹介する。
オブジェクト指向言語のリファレンスの読み解き時の考え方
オブジェクト指向の言語のリファレンスにおいては指定のクラスにて使えるメソッドと属性は何かを調べていくのが基本である。そして、メソッドが返すもののクラスが何であるのかを特定し次はそのクラスが持つメソッドと属性を調べていく。このように階層構造となっているものをブレイクダウンして読み解いていくイメージを持っている。
以下のようにブレイクダウンしていく
あるオブジェクトが属するクラスA > クラスAに使えるメソッドB > メソッドBの返り値が属するクラスC > クラスCが属するクラスにて使えるメソッド...
これだけでは理解が難しいと思うため、具体例を元に理解していただきたい。
リファレンス読み解き具体例
以下のコードで読み込んだdfに対してどのようなメソッドが使えるのかを調査する。
df = spark.sql("SELECT * FROM samples.nyctaxi.trips")
①sparkというオブジェクトが属するクラスを調査
spark.sql()というメソッドが使われているらしい。sparkというオブジェクトは何のクラスに該当するのかを確かめてみる。
Databricks notebook上でsparkと入力し実行してみるとクラスが分かる。

<pyspark.sql.connect.session.SparkSession at 0x7efc0143b530>
⇒sparkというオブジェクトはSparkSessionというクラスであると分かる。
②SparkSessionというクラスについてまとめたページをリファレンスから探す
探すとSpark Sessionクラスについてのページを発見出来る。
③SparkSessionというクラスにて使えるメソッドを確認し返り値の型を確認
ページ内のMethodの箇所に記載があるものがsparkオブジェクトにて使えるメソッドである。
ここにsql()というメソッドが発見出来る。
このsql()というメソッドが何のクラスを返すのかが分かれば、dfというオブジェクトが属するクラスが判明することとなり。dfをどのように加工すればよいのかを調べることが出来る。
sql()というメソッドにはリンクが貼られているためこちらをたどる。
リンク先のreturnsを見れば、どのクラスを返すのかが分かる。sql()はDataFrameを返すようだ。つまり、DataFrameクラスにて使えるメソッドがdfに対して使えるメソッドであると分かる。
④DataFrameクラスにて使えるメソッドを確認
DataFrameクラスのリファレンスページにて記載のメソッドから使えるメソッドを選べばよい。これがdfに対して使用できるメソッド一覧となる。
df.agg()..といったように記述が行えると分かる






