Databricks ジョブを使用して最初のワークフローを作成する
この記事では、サンプル データセットの読み取りと処理を行うタスクを調整する Databricks ジョブについて説明します。 このクイックスタートでは、次のことを行います。
- 新しいノートブックを作成し、年ごとの人気の赤ちゃんの名前を含むサンプルデータセットを取得するコードを追加する。
- サンプル データセットを Unity Catalog に保存します。
- 新しいノートブックを作成し、Unity Catalog からデータセットを読み取り、年でフィルター処理して結果を表示するコードを追加します。
- 新しいジョブを作成し、ノートブックを使って2つのタスクを設定する。
- ジョブを実行し、結果を表示する。
必要条件
ワークスペースが 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 に保存するノートブックを作成するには、次のようにします。
-
Databricksランディングページに移動し、サイドバーで [
新規] をクリックして[ノートブック] を選択します。Databricks は、新しい空白のノートブックをデフォルト フォルダに作成して開きます。 デフォルト言語は最近使用した言語であり、ノートブックは最近使用したコンピュート リソースに自動的にアタッチされます。
-
必要に応じて、 デフォルトの言語を Python に変更します。
-
次のPythonコードをコピーして、ノートブックの最初のセルに貼り付けます。
Pythonimport 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)
フィルタリングされたデータの読み取りと表示
フィルタリング用のデータを読み取って表示するノートブックを作成するには、次の手順を実行します。
-
Databricksランディングページに移動し、サイドバーで [
新規] をクリックして[ノートブック] を選択します。Databricks は、新しい空白のノートブックをデフォルト フォルダに作成して開きます。 デフォルト言語は最近使用した言語であり、ノートブックは最近使用したコンピュート リソースに自動的にアタッチされます。
-
必要に応じて、 デフォルトの言語を Python に変更します。
-
次のPythonコードをコピーして、ノートブックの最初のセルに貼り付けます。
Pythonbabynames = 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")))
ジョブを作成する
-
サイドバーの
[ ワークフロー ]をクリックします。
-
[
] をクリックします。
タスク タブに、タスクの作成ダイアログが表示されます。
-
Add a name for your job...(ジョブの名前の追加) をジョブ名に置き換えてください。
-
タスク名 フィールドにタスクの名前を入力します。(例: retrieve-baby-names (赤ちゃんの名前を取得))
-
[ 種類 ] ドロップダウン メニューで [ ノートブック ] を選択します。
-
ファイルブラウザを使用して最初に作成したノートブックを探し、ノートブック名をクリックして、 確認 をクリックします。
-
「 タスクを作成 」をクリックします。
-
作成したタスクの下にある
をクリックして、別のタスクを追加します。
-
タスク名 フィールドにタスクの名前を入力します。(例: filter-baby-names (赤ちゃんの名前をフィルタリング))
-
[ 種類 ] ドロップダウン メニューで [ ノートブック ] を選択します。
-
ファイルブラウザを使用して2番目に作成したノートブックを探し、ノートブック名をクリックして、 確認 をクリックします。
-
パラメーター の下の 追加 をクリックします。 キー フィールドに
year
を入力します。 値 フィールドに2014
を入力します。 -
「 タスクを作成 」をクリックします。
ジョブを実行する
ジョブをすぐに実行するには、右上隅の [ ] をクリックします。 「実行 」タブをクリックし、「 アクティブ実行 」テーブルで 「今すぐ実行 」をクリックして、ジョブを実行することもできます。
実行の詳細を表示する
-
実行 タブをクリックし、 アクティブな実行 テーブルまたは 完了した実行(過去60日間) テーブルで実行のリンクをクリックします。
-
いずれかのタスクをクリックすると、出力と詳細が表示されます。たとえば、 filter-baby-names タスクをクリックすると、フィルタータスクの出力と実行の詳細が表示されます:
異なるパラメーターでの実行
ジョブを再実行し、別の年の赤ちゃんの名前をフィルタリングするには、次の手順を実行します:
「今すぐ実行 」の横にある「 」をクリックし、「 別のパラメーターを指定して今すぐ実行 」を選択するか、「 アクティブ実行 」テーブルで 「別のパラメーターを指定して今すぐ実行 」をクリックします。
- 値 フィールドに
2015
を入力します。 - 実行 をクリックします。