Databricks Apache Sparkデータフレームチュートリアル

> [Databricksクイックスタートガイド](https://qiita.com/taka_yayoi/items/125231c126a602693610)のコンテンツです。

[DataFrames tutorial \| Databricks on AWS](https://docs.databricks.com/getting-started/spark/dataframes.html) [2021/3/30時点]の翻訳です。

Apache Sparkの[データフレームAPI](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.sql.DataFrame.html#pyspark-sql-dataframe)は、一般的なデータ分析の課題を効率的に解決するための様々な関数(カラムの選択、フィルタリング、ジョイン、集計など)を提供します。データフレームと、Python/SQL/R/Scalaのカスタムコードをシームレスに組み合わせることも可能です。このチュートリアルモジュールでは以下を学びます。

- [サンプルデータの読み込み](#サンプルデータの読み込み)
- [データフレームの参照](#データフレームの参照)
- [SQLクエリーの実行](#sqlクエリーの実行)
- [データフレームの可視化](#データフレームの可視化)

モジュールで紹介したコードを含むサンプルノートブックを提供していますので、インポートして実行することができます。

# 要件

[Databricks Apache Sparkクイックスタート](https://qiita.com/taka_yayoi/items/bf5fb09a0108aa14770b)もご一読ください。

# サンプルデータの読み込み

データフレームによる作業をスタートする簡単な方法は、Databricksワークスペースの`/databricks-datasets`フォルダーにあるDatabricksのデータセットを活用することです。都市の人口と住宅販売価格の中央値を比較したファイルにアクセスするには、`/databricks-datasets/samples/population-vs-price/data_geo.csv`ファイルを読み込みます。

サンプルノートブックはSQLノートブック(デフォルト言語がSQL)なので、以下のいくかのコマンドでは、`%python`[マジックコマンド](https://qiita.com/taka_yayoi/items/dfb53f63aed2fbd344fc#%E6%B7%B7%E6%88%90%E8%A8%80%E8%AA%9E)を使用します。

```py:Python
%python
# Use the Spark CSV datasource with options specifying:
# - First line of file is a header
# - Automatically infer the schema of the data
data = spark.read.csv("/databricks-datasets/samples/population-vs-price/data_geo.csv", header="true", inferSchema="true")
data.cache() # Cache data for faster reuse
data = data.dropna() # drop rows with missing values
```

# データフレームの参照

`data`データフレームを作成したので、`take()`のような標準的なSparkコマンドを用いて容易にデータにアクセスすることができます。例えば、`data`データフレームの最初の10行を参照したい場合には、`data.take(10)`コマンドを実行します。

```py:Python
%python
data.take(10)
```
![](https://docs.databricks.com/_images/gsasg-output-of-the-dataframe-take-command.png)

データをテーブル形式で参照したい場合には、サードパーティのツールにデータをエクスポートするのではなく、Databricksの`display()`コマンドを使用します。

```py:Python
%python
display(data)
```
![](https://docs.databricks.com/_images/gsasg-display-dataframe.png)

# SQLクエリーの実行

SQLクエリーを実行するには、`data`データフレームをテーブルか一時ビューに登録する必要があります。

```py:Python
%python
# Register table so it is accessible via SQL Context
data.createOrReplaceTempView("data_geo")
```

次に、新たなセルで、2015年の販売価格の中央値を表示するSQLクエリーを実行します。

```sql:SQL
%sql
select `State Code`, `2015 median sales price` from data_geo
```
![](https://docs.databricks.com/_images/gsasg-visualize-dataframe-in-a-table.png)

あるいは、ワシントン州の人口推定値を取得します。

```sql:SQL
%sql
select City, `2014 Population estimate` from data_geo where `State Code` = 'WA';
```
![](https://docs.databricks.com/_images/gsasg-dataframe-query.png)

# データフレームの可視化

Databricksの`display()`コマンドを使う別のメリットとして、様々な可視化手法を用いてデータを簡単に可視化できるという点が挙げられます。![](https://docs.databricks.com/_images/chart-button.png)の隣にある下向き矢印をクリックすることで、可視化のタイプの一覧を表示できます。
![](https://docs.databricks.com/_images/display-charts.png)

上で実行した販売価格のクエリーの結果を地図で可視化するために、Mapアイコンをクリックします。
![](https://docs.databricks.com/_images/gsasg-visualize-dataframe-on-a-map.png)

# ノートブック

- [Databricks Apache Sparkデータフレームチュートリアル](https://github.com/taka-yayoi/public_repo/tree/main/spark_dataframe_qs)

# 次のステップ

- [Databricks Apache Spark機械学習チュートリアル \- Qiita](https://qiita.com/taka_yayoi/items/f169dcf4d517ac8dd644)

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)