データエンジニアとしてDatabricksを使い始める

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

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

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

データエンジニアのゴールは、生データを取り出して補強し、他の許可されたユーザー、特にデータサイエンティスト、データアナリストが利用できるようにすることです。このクイックスタートでは、容易に利用できるように、データの取り込み、変換、テーブルへの書き込みをウォークスルーします。

# 始める前に

# ステップ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. Databricksにログインすると、Data Science & Engineeringワークスペースに移動します。

   [ステップ1: DatabricksのData Science & Engineering UIに慣れる](#ステップ1-databricksのdata-science--engineering-uiに慣れる)をご覧ください。

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: データを取り込む

Databricksにデータを取り込む最も簡単な方法はCreate Table Wizardを使用することです。サイドバーで![](https://docs.databricks.com/_images/data-icon.png)Dataをクリックして**Create Table**ボタンをクリックします。
![](https://docs.databricks.com/_images/de-quickstart-create-table.png)

**Create New Table**ダイアログで、お使いのコンピュータから**Files**セクションにCSVファイルをドラッグアンドドロップします。テストするサンプルファイルを必要があるのであれば、[ダイアモンドデータセット](https://raw.githubusercontent.com/tidyverse/ggplot2/main/data-raw/diamonds.csv)をローカルコンピュータをダウンロードし、アップロードするためにドラッグアンドドロップします。
![](https://docs.databricks.com/_images/de-quickstart-create-new-table.png)

1. **Create Table with UI**ボタンをクリックします。
1. ステップ2で作成したQuickstartクラスターを選択します。
1. **Preview Table**ボタンをクリックします。
1. **Specify Table Attributes**セクションまでスクロールダウンしてデータをプレビューします。
1. **First row is header**オプションを選択します。
1. **Infer Schema**オプションを選択します。
1. **Create Table**をクリックします。

これで、クエリーをするための[Delta Lakeテーブル](https://qiita.com/taka_yayoi/items/345f503d5f8177084f24)を作成しました。

## それ以外のデータ取り込みの選択肢

あるいは、テーブルを作成するノートブックのコードを調査し、編集するために**Create Table in Notebook**ボタンをクリックすることができます。**Other Data Sources**セレクターをクリックすることで、Redshift、Kinesis、JDBCのような他の[データソース](https://docs.databricks.com/getting-started/connect/index.html)からデータを取り込むためのコードを生成するためのこの方法を取ることができます。

Salesforceのようにデータを取り込む他のデータソースがある場合、サイドバーの**Partner Connect**をクリックすることでDatabricksのパートナーを容易に活用することができます。Partner Connectからパートナーを選択すると、パートナーのアプリケーションをDatabricksに接続することができ、パートナーの製品、サービスにユーザー登録していない場合でも、フリートライアルをスタートすることも可能です、詳細は[Databricks Partner Connectガイド](https://qiita.com/taka_yayoi/items/401f3d785f8262d53ea2)をご覧ください。

# ステップ4: データをクエリーする

ノートブックは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. ノートブック作成ダイアログで、名前を入力し、言語ドロップダウンでは**Python**を選択します。これによりノートブックの*デフォルト言語*を決定します。
1. **Create**をクリックします。先頭のセルが空白のノートブックが開きます。
1. 最初のセルに以下のコードを入力し、**SHIFT+ENTER**をクリックしてコードを実行します。

    ```py:Python
df = table("diamonds_csv")
display(df)
```

    ノートブックはダイヤモンドの色と平均価格のテーブルを表示します。

    ![](https://docs.databricks.com/_images/diamonds-table.png)

1. 別のセルを作成し、今回はSQLクエリーを入力するために`%sql`マジックコマンドを使用します。

    ```sql:SQL
%sql
select * from diamonds_csv
```

    ノートブックのデフォルト言語を上書きするために、セルの最初に%sql、%r、%python、%scalaマジックコマンドを使用することができます。

1. コマンドを実行するために**SHIFT+ENTER**をクリックします。

# ステップ5: データを可視化する

色ごとのダイアモンドの平均価格のチャートを表示します。

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)

# ステップ6: データを変換する

高信頼かつスケーラブルなデータパイプラインを作成するベストな方法は[Delta Live Tables](https://docs.databricks.com/data-engineering/delta-live-tables/index.html)を使うことです。

効果的なパイプラインの構築、エンドツーエンドの実行方法については[Delta Live Tablesクイックスタート](https://qiita.com/taka_yayoi/items/7fe8ed2c2f95fd53cc3d)を参照ください。

# ステップ7: データガバナンスをセットアップする

Databricksのテーブルへのアクセスをコントロールするには以下の手順を踏みます。

1. サイドバーのペルソナスイッチャーを使用してDatabriks SQL環境に切り替えます。

    Databricksロゴ![](https://docs.databricks.com/_images/databricks-logo.png)の下のアイコンをクリックしてSQLを選択します。

    ![](https://docs.databricks.com/_images/change-persona.gif)

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

    右上のドロップダウンリストで**Starter Endpoint**のようなSQLエンドポイントを選択します。

1. ステップ2で作成した`diamonds_csv`テーブルを検索します。

defaultデータベースを選択し、下のテキストボックスに`dia`と入力してフィルタリングを行い、`diamonds_csv`を選択します。

    ![](https://docs.databricks.com/_images/de-quickstart-data-explorer.png)

1. **Permissions**タブで**Grant**ボタンをクリックします。
1. `All Users`に対してテーブルの`SELECT`、`READ_METADATA`を許可します。
![](https://docs.databricks.com/_images/de-quickstart-grant.png)
1. **OK**をクリックします。

これで作成したテーブルを全てのユーザーが参照できるようになりました。

# ステップ8: ジョブをスケジュールする

Databricksクラスターのスケーラブルなリソースを用いて、データ処理タスクを事項するジョブをスケジューリングすることができます。シングルタスクのジョブ、あるいは大規模かつ複雑な依存関係を持つマルチタスクアプリケーションのジョブを構成することができます。

サンプルデータセットを読み込み処理を行うタスクをオーケストレートするジョブの作成方法については、[Jobs quickstart](https://docs.databricks.com/data-engineering/jobs/jobs-quickstart.html)をご覧ください。

# 次のステップ

Databricksにおけるデータエンジニアリングタスクの実行を支援する他のツールについて学習することができます。

- [Connect your favorite IDE using Databricks Connect](https://docs.databricks.com/dev-tools/index.html#use-an-ide)
- [Use Azure Data Factory or Apache Airflow to manage dependencies in data pipelines](https://docs.databricks.com/dev-tools/data-pipelines.html)
- [Use dbt with Databricks](https://docs.databricks.com/dev-tools/dbt.html)
- [Develop a CI/CD pipeline for Databricks](https://docs.databricks.com/dev-tools/ci-cd/index.html)
- [Learn about the Databricks Command Line Interface \(CLI\)](https://docs.databricks.com/dev-tools/cli/index.html)
- [Learn about the Databricks Terraform Provider](https://docs.databricks.com/dev-tools/terraform/index.html)

### Databricks 無料トライアル

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