メインコンテンツまでスキップ

Databricks ジョブを使用して最初のワークフローを作成する

この記事では、サンプル データセットの読み取りと処理を行うタスクを調整する Databricks ジョブについて説明します。 このクイックスタートでは、次のことを行います。

  1. 新しいノートブックを作成し、年ごとの人気の赤ちゃんの名前を含むサンプルデータセットを取得するコードを追加する。
  2. サンプル データセットを Unity Catalog に保存します。
  3. 新しいノートブックを作成し、Unity Catalog からデータセットを読み取り、年でフィルター処理して結果を表示するコードを追加します。
  4. 新しいジョブを作成し、ノートブックを使って2つのタスクを設定する。
  5. ジョブを実行し、結果を表示する。

必要条件

Unity Catalogボリューム が必要です。この記事では、カタログ内の default という名前のスキーマで my-volume という名前のボリュームを使用します main。また、Unity Catalog では次のアクセス許可が必要です。

  • READ VOLUME と、my-volume ボリュームの場合は WRITE VOLUME、または ALL PRIVILEGES
  • USE SCHEMA または default スキーマの場合は ALL PRIVILEGES
  • USE CATALOG またはmainカタログのALL PRIVILEGES

これらのアクセス許可を設定するには、Databricks 管理者または Unity Catalog の特権とセキュリティ保護可能なオブジェクトを参照してください。

ノートブックを作成する

データの取得と保存

サンプル データセットを取得して Unity Catalog に保存するノートブックを作成するには、次のようにします。

  1. Databricksランディングページに移動し、サイドバーで [新しいアイコン 新規] をクリックして[ノートブック] を選択します。Databricks は、新しい空白のノートブックをデフォルト フォルダに作成して開きます。 デフォルト言語は最近使用した言語であり、ノートブックは最近使用したコンピュート リソースに自動的にアタッチされます。

  2. 必要に応じて、 デフォルトの言語を Python に変更します

  3. 次のPythonコードをコピーして、ノートブックの最初のセルに貼り付けます。

    Python
    import requests

    response = requests.get('https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)

フィルタリングされたデータの読み取りと表示

フィルタリング用のデータを読み取って表示するノートブックを作成するには、次の手順を実行します。

  1. Databricksランディングページに移動し、サイドバーで [新しいアイコン 新規] をクリックして[ノートブック] を選択します。Databricks は、新しい空白のノートブックをデフォルト フォルダに作成して開きます。 デフォルト言語は最近使用した言語であり、ノートブックは最近使用したコンピュート リソースに自動的にアタッチされます。

  2. 必要に応じて、 デフォルトの言語を Python に変更します

  3. 次のPythonコードをコピーして、ノートブックの最初のセルに貼り付けます。

    Python
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))

ジョブを作成する

  1. サイドバーのワークフローアイコンワークフロー ]をクリックします。

  2. [ 「ジョブを作成」ボタン] をクリックします。

    タスク タブに、タスクの作成ダイアログが表示されます。

    最初のタスクダイアログの作成

  3. Add a name for your job...(ジョブの名前の追加) をジョブ名に置き換えてください。

  4. タスク名 フィールドにタスクの名前を入力します。(例: retrieve-baby-names (赤ちゃんの名前を取得))

  5. [ 種類 ] ドロップダウン メニューで [ ノートブック ] を選択します。

  6. ファイルブラウザを使用して最初に作成したノートブックを探し、ノートブック名をクリックして、 確認 をクリックします。

  7. タスクを作成 」をクリックします。

  8. 作成したタスクの下にある 「タスクを追加」ボタン をクリックして、別のタスクを追加します。

  9. タスク名 フィールドにタスクの名前を入力します。(例: filter-baby-names (赤ちゃんの名前をフィルタリング))

  10. [ 種類 ] ドロップダウン メニューで [ ノートブック ] を選択します。

  11. ファイルブラウザを使用して2番目に作成したノートブックを探し、ノートブック名をクリックして、 確認 をクリックします。

  12. パラメーター の下の 追加 をクリックします。 キー フィールドにyearを入力します。 フィールドに2014を入力します。

  13. タスクを作成 」をクリックします。

ジョブを実行する

ジョブをすぐに実行するには、右上隅の [ 「今すぐ実行」ボタン ] をクリックします。 「実行 」タブをクリックし、「 アクティブ実行 」テーブルで 「今すぐ実行 」をクリックして、ジョブを実行することもできます。

実行の詳細を表示する

  1. 実行 タブをクリックし、 アクティブな実行 テーブルまたは 完了した実行(過去60日間) テーブルで実行のリンクをクリックします。

  2. いずれかのタスクをクリックすると、出力と詳細が表示されます。たとえば、 filter-baby-names タスクをクリックすると、フィルタータスクの出力と実行の詳細が表示されます:

    フィルター名の結果を表示

異なるパラメーターでの実行

ジョブを再実行し、別の年の赤ちゃんの名前をフィルタリングするには、次の手順を実行します:

  1. ブルーダウンキャレット 「今すぐ実行 」の横にある「 」をクリックし、「 別のパラメーターを指定して今すぐ実行 」を選択するか、「 アクティブ実行 」テーブルで 「別のパラメーターを指定して今すぐ実行 」をクリックします。
  2. フィールドに2015を入力します。
  3. 実行 をクリックします。