Azure Databricks ジョブを使用して最初のワークフローを作成する
この記事では、サンプルデータセットを読み取って処理するためのタスクを調整する Azure Databricks ジョブ について説明します。 このクイック スタートでは次の作業を行います。
- 新しいノートブックを作成し、年ごとの赤ちゃんの人気の名前を含むサンプルデータセットを取得するコードを追加します。
- サンプル データセットを Unity Catalog に保存します。
- 新しいノートブックを作成し、Unity Catalog からデータセットを読み取るコードを追加して、年でフィルター処理し、結果を表示します。
- 新しいジョブを作成し、ノートブックを使用して2つのタスクを構成します。
- ジョブを実行し、結果を表示します。
要件
ワークスペースが Unity Catalog 対応で、サーバーレス ジョブが有効になっている場合、既定では、ジョブはサーバーレス コンピューティングで実行されます。 サーバーレス コンピューティングでジョブを実行するためにクラスター作成アクセス許可は必要ありません。
それ以外の場合、ジョブ コンピューティングを作成するためのクラスター作成アクセス許可、または汎用コンピューティング リソースへのアクセス許可が必要です。
Unity Catalog にはボリュームが必要です。 この記事では、main
という名前のカタログ内の default
という名前のスキーマで、my-volume
という名前のボリュームを使用します。 また、Unity Catalog には次のアクセス許可が必要です。
my-volume
ボリュームのREAD VOLUME
とWRITE VOLUME
、またはALL PRIVILEGES
。default
スキーマのUSE SCHEMA
またはALL PRIVILEGES
。main
カタログのUSE CATALOG
またはALL PRIVILEGES
。
これらのアクセス許可を設定するには、Databricks 管理者に確認するか、「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
ノートブックを作成する
データの取得と保存
サンプル データセットを取得して Unity Catalog に保存するノートブックを作成するには、次のようにします。
Azure Databricks のランディング ページにアクセスし、サイドバーの [新規] をクリックし、[ノートブック] を選択します。 Databricks により、既定のフォルダーに新しい空のノートブックが作成され開かれます。 既定の言語は、最近使用した言語であり、ノートブックは、最近使用したコンピューティング リソースに自動的にアタッチされます。
必要に応じて、既定の言語を 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)
フィルター処理されたデータの読み取りと表示
フィルター処理用のデータを読み取って表示するノートブックを作成するには、次のようにします。
Azure Databricks のランディング ページにアクセスし、サイドバーの [新規] をクリックし、[ノートブック] を選択します。 Databricks により、既定のフォルダーに新しい空のノートブックが作成され開かれます。 既定の言語は、最近使用した言語であり、ノートブックは、最近使用したコンピューティング リソースに自動的にアタッチされます。
必要に応じて、既定の言語を 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")))
ジョブの作成
サイドバーの [ワークフロー] をクリックします。
をクリックします。
[タスク] タブには、[タスクの作成] ダイアログが表示されます。
[ジョブ名を追加] を自分のジョブ名に置き換えます。
[タスク名] フィールドに、タスクの名前を入力します (たとえば、retrieve-baby-namesなど)。
[種類] ドロップダウン メニューで、[ノートブック] を選択します。
ファイル ブラウザーを使用して、作成した最初のノートブックを検索し、ノートブック名をクリックして、[確認] をクリックします。
[タスクの作成] をクリックします。
別のタスクを追加するには、作成したタスクの下の をクリックします。
[タスク名] フィールドに、タスクの名前を入力します (たとえば、filter-baby-names など)。
[種類] ドロップダウン メニューで、[ノートブック] を選択します。
ファイル ブラウザーを使用して、作成した 2 番目のノートブックを検索し、ノートブック名をクリックして、[確認] をクリックします。
[パラメーター] の下の [追加] をクリックします。 [キー] フィールドに「
year
」と入力します。 “値” フィールドに「2014
」と入力します。[タスクの作成] をクリックします。
ジョブの実行
すぐにジョブを実行するには、右上隅にある をクリックします。 [実行] タブをクリックし、[アクティブな実行] テーブルの [今すぐ実行] をクリックして、ジョブを実行することもできます。
実行の詳細を表示する
[実行] タブをクリックし、[アクティブな実行] テーブルまたは [完了した実行 (過去 60 日)] テーブルにある実行のリンクをクリックします。
いずれかのタスクをクリックして、出力と詳細を確認します。 たとえば、filter-baby-names タスクをクリックすると、フィルター タスクの出力と実行の詳細が表示されます。
別のパラメーターを使用して実行する
ジョブを再実行し、別の年の赤ちゃんの名前をフィルター処理するには、次のようにします。
- [今すぐ実行] の横にある をクリックし、[異なるパラメーターで今すぐ実行] を選択するか、[アクティブな実行] テーブルの [異なるパラメーターで今すぐ実行] をクリックします。
- “値” フィールドに「
2015
」と入力します。 - [実行] をクリックします。