データサイエンティストとしてDatabricksを使い始める

[Get started with Databricks as a data scientist \| Databricks on AWS](https://docs.databricks.com/getting-started/quick-start.html) [2022/1/22時点]の翻訳です。

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

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

このチュートリアルでは、Databricks Data Science & Engineeringワークスペースをご案内します。クラスターとノートブックを作成し、テーブルに対してクエリーを実行し、クエリーの結果を表示します。

> **ティップス**
本書を補完する目的で、DatabricksのData Science & Engineeringランディングページから利用できる5分のハンズオンを提供するクイックスタートチュートリアルノートブックもチェックしてください。Databricksにログインし、**クイックスタートチュートリアル**をクリックして下さい。チュートリアルが見つからない場合、サイドバーのペルソナスイッチャーからData Science & Engineeringを選択してください。

> ![Screen Shot 2022-01-27 at 8.22.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/2c14635e-9dfc-a3eb-9f6d-893949d086a3.png)

ノートブックの日本語訳です。

https://github.com/taka-yayoi/public_repo/tree/main/quickstart_ds

# 要件

Databricksにログインすると、Data Science & Engineeringワークスペースに移動します。[Databricksフリートライアルへのサインアップ](https://qiita.com/taka_yayoi/items/fb4f57c069e1f272e88a)を参照ください。

# ステップ1: DatabricksのData Science & Engineering UIに慣れる

![](https://docs.databricks.com/_images/landing-aws.png)

画面左のサイドバーとランディングページの**Common Tasks**リストから、DatabricksのData Science & Engineeringの主要エンティティ: ワークスペース、クラスター、テーブル、ノートブック、ジョブ、ライブラリにアクセスすることができます。ワークスペースはノートブック、ライブラリ、インポートしたデータのようなDatabricksアセットを格納する特殊なルートフォルダーです。

## サイドバーの利用

左のサイドバーからDatabricksの全てのアセットにアクセスできます。サイドバーのコンテンツは選択するペルソナ(**Data Science & Engineering**、**Machine Learning**、**SQL**)によって決まります。

- デフォルトではサイドバーは畳み込まれた状態で表示され、アイコンのみが表示されます。サイドバー上にカーソルを移動すると全体を表示することができます。
- ペルソナを変更するには、Databricksロゴ![](https://docs.databricks.com/_images/databricks-logo.png)の直下にあるアイコンからペルソナを選択します。
![](https://docs.databricks.com/_images/change-persona.gif)

- 次回ログイン時に表示されるペルソナを固定するには、ペルソナの隣にあるをクリックします。再度クリックするとピンを削除することができます。
- サイドバーの一番下にある**Menu options**で、サイドバーの表示モードを切り替えることができます。**Auto**(デフォルト)、**Expand**(展開)、**Collapse**(畳み込み)から選択できます。
- 機械学習に関連するページを開く際には、ペルソナは自動的に**Machine Learning**に切り替わります。

## ヘルプの利用

ヘルプにアクセスするためには、右上のアイコン![](https://docs.databricks.com/_images/question-icon.png)をクリックします。
![](https://docs.databricks.com/_images/help-menu.png)

# ステップ2: クラスターを作成する

クラスターはDatabricksの計算リソースの集合体です。クラスターを作成するには：

1. サイドバーの![](https://docs.databricks.com/_images/clusters-icon.png)**Compute**ボタンをクリックします。


1. クラスターページで、**Create Cluster**をクリックします。
![](https://docs.databricks.com/_images/quickstart-cluster.png)

1. クラスター作成ページで、クラスター名**Quickstart**を指定して、Databricksランタイムバージョンドロップダウンから**7.3 LTS (Scala 2.12, Spark 3.0.1)**を選択します。
1. **Create Cluster**をクリックします。

# ステップ3: ノートブックを作成する

ノートブックはApache Sparkクラスターでの処理を実行するセルの集合体です。ワークスペースでノートブックを作成するには：

1. サイドバーで![](https://docs.databricks.com/_images/workspace-icon.png)**Workspace**ボタンをクリックします。

1. ワークスペースのフォルダーで![](https://docs.databricks.com/_images/down-caret.png)をクリックし、**Create > Notebook**を選択します。
![](https://docs.databricks.com/_images/create-notebook.png)
1. ノートブック作成ダイアログで、名前を入力し、言語ドロップダウンでは**SQL**を選択します。これによりノートブックの*デフォルト言語*を決定します。
1. **Create**をクリックします。先頭のセルが空白のノートブックが開きます。

# ステップ4: テーブルを作成する

Databricksクラスターにインストールされた分散ファイルシステム[Databricks File System \(DBFS\)](https://qiita.com/taka_yayoi/items/897264c486e179d72247)にマウントされたデータセットコレクションである[Databricksデータセット](https://qiita.com/taka_yayoi/items/dcf77d0b007fae774ce5)のサンプルCSVファイルからテーブルを作成します。テーブルを作成するには2つの選択肢があります。

## オプション1: CSVデータからSparkテーブルを作成する

標準的なパフォーマンスで十分で、すぐにテーブルを作りたいのであればこちらのオプションとなります。以下のスニペットをノートブックセルに貼り付けます。

```sql:SQL
DROP TABLE IF EXISTS diamonds;

CREATE TABLE diamonds USING CSV OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")
```

## オプション2: CSVデータをDelta Lake形式で書き込み、Deltaテーブルを作成する

[Delta Lake](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24)は、高速な読み込み、その他のメリットを提供する強力なトランザクショナルストレージレイヤーです。Delta LakeフォーマットはParquetファイルとトランザクションログから構成されます。将来的なパフォーマンスを見据えた場合に最適な選択肢となります。

1. CSVデータをデータフレームに読み込み、Delta Lake形式で書き込みを行います。このコマンドでは、Pythonの[言語マジックコマンド](https://qiita.com/taka_yayoi/items/dfb53f63aed2fbd344fc#%E6%B7%B7%E6%88%90%E8%A8%80%E8%AA%9E)を使用し、ノートブックのデフォルト言語(SQL)以外の言語の処理を組み込みます。以下のコードスニペットをノートブックセルに貼り付けます。

    ```python:Python
%python
diamonds = spark.read.csv("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header="true", inferSchema="true")
diamonds.write.format("delta").save("/mnt/delta/diamonds")
```

1. 格納場所にDeltaテーブルを作成します。以下のコードスニペットをノートブックセルに貼り付けます。

    ```sql:SQL
DROP TABLE IF EXISTS diamonds;
CREATE TABLE diamonds USING DELTA LOCATION '/mnt/delta/diamonds/'
```

**SHIFT + ENTER**を押してセルを実行します。ノートブックは自動的にステップ2で作成したクラスターにアタッチされ、セル内のコマンドが実行されます。

# ステップ5: テーブルにクエリーを実行する

色ごとのダイヤモンドの平均価格を計算するSQL分を実行します。

1. セルの下にある![](https://docs.databricks.com/_images/add-cell.png)をクリックして、ノートブックにセルを追加します。
![](https://docs.databricks.com/_images/quick-start-new-cell.png)

1. 以下のスニペットをセルに貼り付けます。

    ```sql:SQL
SELECT color, avg(price) AS price FROM diamonds GROUP BY color ORDER BY COLOR
```

**SHIFT + ENTER**を押してセルを実行します。ダイヤモンドの色と平均価格が表示されます。
![](https://docs.databricks.com/_images/diamonds-table.png)


# ステップ6: データを表示

色ごとの平均ダイヤモンド価格のグラフを表示します。

1. バーチャートアイコン![](https://docs.databricks.com/_images/chart-button.png)をクリックします。
1. **Plot Options**をクリックします。
    - **color**をKeysボックスにドラッグします。
    - **price**をValuesボックスにドラッグします。
    - Aggregationドロップダウンで**AVG**を選択します。
![](https://docs.databricks.com/_images/diamonds-plot-options.png)

1. **Apply**をクリックしバーチャートを表示します。
![](https://docs.databricks.com/_images/diamonds-bar-chart.png)

# 次のステップ

DatabricksのData Science & Engineeringワークスペースの主要ツールを学ぶには以下をご覧下さい。

- [Introduction to Databricks](https://docs.databricks.com/getting-started/introduction/index.html)
- [Navigate the workspace](https://docs.databricks.com/workspace/index.html)
- [Databricksのノートブック](https://qiita.com/taka_yayoi/items/24a897cf40bba6d9e305)、[Databricksにおけるデータの可視化](https://qiita.com/taka_yayoi/items/36a307e79e9433121c38)
- [DatabricksにおけるPythonライブラリ管理](https://qiita.com/taka_yayoi/items/d3a46efdc1ad01a581d0)
- [Clusters](https://docs.databricks.com/clusters/index.html)、[Databricksにおけるジョブ管理](https://qiita.com/taka_yayoi/items/b3275a1983c51a8bbe1a)
- [Databricksにおけるデータのインポート、読み込み、変更](https://qiita.com/taka_yayoi/items/4fa98b343a91b8eaa480)
- [Databricksにおけるデータベースおよびテーブル](https://qiita.com/taka_yayoi/items/e7f6982dfbee7fc84894)
- [Developer tools and guidance](https://docs.databricks.com/dev-tools/index.html)
- [Databricks integrations](https://docs.databricks.com/integrations/index.html)

以下のクイックスタートもご覧ください。

- [データエンジニアとしてDatabricksを使い始める](https://qiita.com/taka_yayoi/items/a18adea4959b885783c6)
- [Get started with Databricks as a data analyst](https://docs.databricks.com/getting-started/sql-quick-start.html)
- [Get started with Databricks as a machine learning engineer](https://docs.databricks.com/getting-started/ml-quick-start.html)
- [Get started as a Databricks administrator](https://docs.databricks.com/getting-started/admin-get-started.html)

### Databricks 無料トライアル

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