Databricksジョブのクイックスタート

[Jobs quickstart \| Databricks on AWS](https://docs.databricks.com/data-engineering/jobs/jobs-quickstart.html) [2022/3/1時点]の翻訳です。

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

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

本書ではサンプルデータセットを読み込み、処理を行うタスクをオーケストレートするDatabricks[ジョブ](https://qiita.com/taka_yayoi/items/b3275a1983c51a8bbe1a)をデモンストレーションします。このクイックスタートでは以下のことを行います。

1. 年ごとに人気のある赤ちゃんの名前を含むサンプルデータセットを取得する新規ノートブックを作成し、コードを追加します。
1. DBFSにサンプルデータセットをを保存します。
1. DBFSからデータセットを読み込み、年でフィルタリングを行い結果を表示するための新規ノートブックを作成し、コードを追加します。
1. 新規にジョブを作成し、ノートブックを用いる2つのタスクを設定します。
1. ジョブを実行して結果を参照します。

# 要件

ジョブクラスターを作成するための[クラスター作成権限](https://qiita.com/taka_yayoi/items/991aae376c089df58504#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%A8%A9%E8%A8%AD%E5%AE%9A)、あるいはall-purposeクラスターに対する[権限](https://docs.databricks.com/security/access-control/cluster-acl.html#cluster-level-permissions)が必要です。

# ノートブックの作成

## データの収集及び保存

サンプルデータセットを収集し、DBFSに保存するノートブックを作成します。

1. Databricksのランディングページに移動し、**Create Blank Notebook**を選択するか、サイドバーの![](https://docs.databricks.com/_images/create-icon.png)**Create**をクリックし、メニューから**Notebook**を選択します。**Create Notebook**ダイアログが表示されます。
1. **Create Notebook**ダイアログでは、ノートブックの名前、例えば**Retrieve baby names**を指定します。**Default Language**ドロップダウンメニューから**Python**を選択します。**Cluster**はデフォルトのままで構いません。このノートブックを使用するタスクを作成する際にクラスターを設定します。
1. **Create**をクリックします。
1. 以下のPythonコードをノートブックの最初のセルに貼り付けます。

    ```py:Python
    import requests
    
    response = requests.get('http://health.data.ny.gov/api/views/myeu-    hzra/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("dbfs:/FileStore/babynames.csv", csvfile, True)
    ```

## データの読み込み及びフィルタリングしたデータの表示

データを読み取りフィルタリングしたデータを表示するノートブックを作成します。

1. Databricksのランディングページに移動し、**Create Blank Notebook**を選択するか、サイドバーの![](https://docs.databricks.com/_images/create-icon.png)**Create**をクリックし、メニューから**Notebook**を選択します。**Create Notebook**ダイアログが表示されます。
1. **Create Notebook**ダイアログでは、ノートブックの名前、例えば**Filter baby names**を指定します。**Default Language**ドロップダウンメニューから**Python**を選択します。**Cluster**はデフォルトのままで構いません。このノートブックを使用するタスクを作成する際にクラスターを設定します。
1. **Create**をクリックします。
1. 以下のPythonコードをノートブックの最初のセルに貼り付けます。

    ```py:Python
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("dbfs:/FileStore/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").rdd.map(lambda row : row[0]).collect()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    ```

# ジョブの作成

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

    タスク作成ダイアログと**Tasks**タブが表示されます。
![](https://docs.databricks.com/_images/create-job-dialog.png)

1. **Add a name for your job…** にジョブの名前を入力します。
1. **Task name**フィールドにタスクの名前、例えば**retrieve-baby-names**を入力します。
1. **Type**ドロップダウンで**Notebook**を選択します。
1. 最初に作成したノートブックを選択するためにファイルブラウザを使用します。ノートブック名を選択し、**Confirm**をクリックします。
1. **Create task**をクリックします。
1. 別のタスクを追加するために、作成したタスクの下にある![](https://docs.databricks.com/_images/add-task.png)をクリックします。
1. **Task name**フィールドにタスクの名前、例えば**filter-baby-names**を入力します。
1. **Type**ドロップダウンで**Notebook**を選択します。
1. 二番目に作成したノートブックを選択するためにファイルブラウザを使用します。ノートブック名を選択し、**Confirm**をクリックします。
1. **Parameters**の下の**Add**をクリックします。**Key**フィールドには`year`、**Value**フィールドには`2014`を入力します。
1. **Create task**をクリックします。

# ジョブの実行

ジョブを即時実行するには、右上の![](https://docs.databricks.com/_images/run-now-button.png)をクリックします。**Runs**タブをクリックし、**Active Runs**テーブルの**Run Now**をクリックすることでも実行することができます。

# ジョブ実行詳細の参照

1. **Runs**タブをクリックし、**Active Runs**テーブルか**Completed Runs (past 60 days)** テーブルのジョブ実行のリンクをクリックします。
1. 出力と詳細を見るためにいずれかのタスクをクリックします。例えば、フィルタリングタスクのステータスとアウトプットを参照するために、**filter-baby-names**タスクをクリックします。
![](https://docs.databricks.com/_images/quickstart-view-results.png)

# 別のパラメーターを指定して実行

別の年の赤ちゃんの名前をフィルタリングしてジョブを再実行します。

1. **Run Now**の隣の![](https://docs.databricks.com/_images/down-caret-blue.png)をクリックし、**Run Now with Different Parameters**を選択するか、[Active Runs](https://qiita.com/taka_yayoi/items/b3275a1983c51a8bbe1a#%E3%82%B8%E3%83%A7%E3%83%96%E5%AE%9F%E8%A1%8C%E3%81%AE%E5%8F%82%E7%85%A7)テーブルの**Run Now with Different Parameters**をクリックします。
1. **Value**フィールドに`2015`と入力します。
1. **Run**をクリックします。

### Databricks 無料トライアル

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