Databricksジョブで最初のワークフローを作成する

この記事では、サンプルデータセットを読み込んで処理するタスクをオーケストレーションするDatabrickジョブを説明します。このクイックスタートで、以下ができるようになります:

  1. 新しいノートブックを作成し、年ごとの人気の赤ちゃんの名前を含むサンプルデータセットを取得するコードを追加する。

  2. サンプルデータセットを Unity Catalog に保存します。

  3. 新しいノートブックを作成し、Unity Catalog からデータセットを読み取り、年ごとにフィルタリングして結果を表示するコードを追加します。

  4. 新しいジョブを作成し、ノートブックを使って2つのタスクを設定する。

  5. ジョブを実行し、結果を表示する。

要件

ワークスペースが Unity Catalog 対応で、サーバレス ジョブが有効な場合は、当然、サーバレス コンピュートでジョブが実行されます。 サーバレス コンピュートでジョブを実行するためにクラスター作成権限は必要ありません。

それ以外の場合は、ジョブ コンピュートを作成するためのクラスター作成権限、または汎用コンピュート リソースへの権限が必要です。

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コードをコピーして、ノートブックの最初のセルに貼り付けます。

    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コードをコピーして、ノートブックの最初のセルに貼り付けます。

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