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コードをコピーして、ノートブックの最初のセルに貼り付けます。
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)
フィルタリングされたデータの読み取りと表示
フィルタリング用のデータを読み取って表示するノートブックを作成するには、次の手順を実行します。
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")))
ジョブの作成
サイドバーの[ワークフロー]をクリックします。
[ ] をクリックします。
タスクタブに、タスクの作成ダイアログが表示されます。
Add a name for your job...(ジョブの名前の追加)をジョブ名に置き換えてください。
タスク名フィールドにタスクの名前を入力します。(例: retrieve-baby-names(赤ちゃんの名前を取得))
[タイプ]ドロップダウン メニューで、 [ノートブック]を選択します。
ファイルブラウザを使用して最初に作成したノートブックを探し、ノートブック名をクリックして、確認をクリックします。
「タスクを作成」をクリックします。
クリック作成したタスクの下に別のタスクを追加します。
タスク名フィールドにタスクの名前を入力します。(例: filter-baby-names(赤ちゃんの名前をフィルタリング))
[タイプ]ドロップダウン メニューで、 [ノートブック]を選択します。
ファイルブラウザを使用して2番目に作成したノートブックを探し、ノートブック名をクリックして、確認をクリックします。
パラメーターの下の追加をクリックします。キーフィールドに
year
を入力します。値フィールドに2014
を入力します。「タスクを作成」をクリックします。
実行の詳細の表示
実行タブをクリックし、アクティブな実行テーブルまたは完了した実行(過去60日間)テーブルで実行のリンクをクリックします。
いずれかのタスクをクリックすると、出力と詳細が表示されます。たとえば、 filter-baby-namesタスクをクリックすると、フィルタータスクの出力と実行の詳細が表示されます:
別のパラメータで実行
ジョブを再実行し、別の年の赤ちゃんの名前をフィルタリングするには、次の手順を実行します:
「next」をクリックして 「 Run now 」を選択し、「別の パラメーターを指定して実行 」を選択するか、「 Active 実行 」テーブルで 別のパラメーターを指定して「今すぐ実行 」をクリックします。
値フィールドに
2015
を入力します。実行をクリックします。