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

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

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

要件

ワークスペースが Unity Catalog 対応で、サーバーレス ワークフローが有効になっている場合、既定では、ジョブはサーバーレス コンピューティングで実行されます。 サーバーレス コンピューティングでジョブを実行するためにクラスター作成アクセス許可は必要ありません。

それ以外の場合、ジョブ コンピューティングを作成するためのクラスター作成アクセス許可、または汎用コンピューティング リソースへのアクセス許可が必要です。

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

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

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

ノートブックを作成する

データの取得と保存

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

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

  2. 必要に応じて、既定の言語を Python に変更します

  3. 次の 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. Azure Databricks のランディング ページにアクセスし、サイドバーの [新しいアイコン][新規] をクリックし、[ノートブック] を選択します。 Databricks により、既定のフォルダーに新しい空のノートブックが作成され開かれます。 既定の言語は、最近使用した言語であり、ノートブックは、最近使用したコンピューティング リソースに自動的にアタッチされます。

  2. 必要に応じて、既定の言語を Python に変更します

  3. 次の 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. [ジョブの作成] ボタンをクリックします。

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

    1番目のタグ ダイアログを作成する

  3. [ジョブ名を追加] を自分のジョブ名に置き換えます。

  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. [実行] をクリックします。