Azure Databricks クリーン ルームで JAR ワークロードを実行する

このページでは、クリーン ルームでカスタム JAR ワークロードを実行する方法について説明します。 JAR のサポートにより、コンパイル済みのJavaまたは Scala コードをクリーン ルームに取り込み、コラボレーターが共有するデータに対して実行できます。コラボレーターが別のコラボレーターのデータやコードに直接アクセスする必要はありません。

クリーン ルームで JAR を使用するには、次の 2 つの方法があります。

  • JAR 分析: ノートブックと同様に、スタンドアロン JAR ワークロードをクリーン ルーム分析として実行します。 メイン クラスをエントリ ポイントとして指定すると、すべてのコラボレーターが実行前に分析を承認します。
  • JAR ユーザー定義関数 (UDF): JAR からカスタム Javaまたは Scala 関数を登録し、CREATE TEMPORARY FUNCTIONを使用してクリーン ルーム ノートブックから呼び出します。

次の表は、2 つの方法を比較しています。

能力 JAR 分析 JAR UDF
実行内容 独自の分析として登録されたスタンドアロン JAR ワークロード JAR からの関数(クリーン ルーム ノートブックから呼び出される)
入り口ポイント 指定するメイン クラス CREATE TEMPORARY FUNCTION で参照するハンドラー メソッド
プレビューで有効にする クリーン ルーム JAR タスク Clean Room Jar UDF
サーバーレス環境 4-scala-preview 環境バージョン 4
実行方法 ノートブックと同様に承認され、その後は単独で実行される それを呼び出すノートブックの一部として実行されます

始める前の準備

  • すべてのコラボレーターがプレビューを有効にした後、新しいクリーン ルームを作成する必要があります。 プレビューは、有効になる前に作成されたクリーン ルームには適用されません。プレビューを後で無効にしても、この機能を既に使用しているクリーン ルームには影響しません。

  • 新しく作成されたクリーン ルームは、JAR ワークロードを実行するまでに最大 24 時間かかることがあります。

  • JAR は、Java 17 以上、または Scala 2.13 以上でコンパイルする必要があります。

  • サーバーレス コンピューティングが必要です。 JAR 分析は、 4-scala-preview サーバーレス環境で実行されます。 JAR UDF には、サーバーレス環境バージョンの 4が必要です。

JAR をビルドしてテストする

  • すべてのコラボレーターがプレビューを有効にした後、新しいクリーン ルームを作成する必要があります。 プレビューは、有効になる前に作成されたクリーン ルームには適用されません。プレビューを後で無効にしても、この機能を既に使用しているクリーン ルームには影響しません。

  • JAR の分析については、ジョブ用の JAR タスクを参照してください。

  • JAR UDF については、「 ユーザー定義スカラー関数 - Scala」を参照してください。

JAR が期待どおりに動作したら、Unity カタログ ボリュームにアップロードします。 共有する JAR のみを保持するボリュームを作成できます。 ボリューム全体がクリーン ルームと共有されるため、共有するファイルのみを含めます。

JAR 分析を実行する

クリーン ルームで JAR 分析を実行するには、次の操作を行います。

  1. JAR を Unity カタログ ボリュームにアップロードします。

  2. データ資産として、ボリュームをクリーン ルームに追加します。 手順 3 を参照してください。データ資産とノートブックをクリーン ルームに追加します。

  3. Azure Databricks ワークスペースで、Data icon.Catalog をクリックします。

  4. [ クリーン ルーム] > ボタンをクリックします。

  5. 一覧からクリーン ルームを選択します。

  6. [ 分析の追加] をクリックします。

  7. [ 分析の追加] ページで、[ JAR 分析] を選択します。

  8. JAR 分析の詳細 (エントリ ポイントとして使用するメイン クラス、共有ボリューム内の JAR へのパスなど) を入力します。

  9. [ JAR の追加] をクリックして、分析をクリーン ルームに追加します。

  10. すべてのコラボレーターが JAR 分析を承認していることを確認します。

    JAR 分析は、クリーン ルーム ノートブックと同じ方法で承認されます。すべてのコラボレーターは分析を確認し、承認レビューを追加する必要があります。 自動承認ルールを構成することもできます。 「クリーン ルームでノートブックを承認する」「自動承認ルール」を参照してください。

  11. JAR 分析を選択し、[ 実行] をクリックします。

  12. main メソッドに渡すパラメーターを指定します。

    Clean Rooms では、クリーン ルーム ノートブックに渡されるパラメーターと同様に、 --<key> <value> 形式で追加のコンテキスト パラメーターが自動的に挿入されます。 Notebook パラメーターを参照してください。

ノートブックで JAR UDF を使用する

クリーン ルーム ノートブックで JAR UDF を使用するには、次の操作を行います。

  1. JAR を Unity カタログ ボリュームにアップロードします。

  2. データ資産として、ボリュームをクリーン ルームに追加します。 手順 3 を参照してください。データ資産とノートブックをクリーン ルームに追加します。

  3. クリーン ルーム ノートブックで、 CREATE TEMPORARY FUNCTION を使用して、共有 JAR によってサポートされる関数を登録し、他の関数と同様に呼び出します。

    Java JAR にはLANGUAGE JAVAを使用し、Scala JAR にはLANGUAGE SCALAを使用します。 ENVIRONMENT_VERSION は、4 である必要があります。 DEPENDENCIES パスで、元のカタログ名ではなく、クリーン ルームの作成時に割り当てられたクリーン ルーム カタログエイリアスを使用します。

    次の例では、JAR から電子メール正規化関数を登録します。

    CREATE TEMPORARY FUNCTION normalize_email(email STRING)
    RETURNS STRING
    LANGUAGE JAVA
    ENVIRONMENT (
      DEPENDENCIES = '["/Volumes/<catalog-alias>/<schema>/<volume>/<path>/<file-name>.jar"]',
      ENVIRONMENT_VERSION = 4
    )
    HANDLER "com.mycompany.utils.EmailNormalizer.normalize"
    

    次に、クエリで関数を呼び出します。

    SELECT email_address, normalize_email(email_address) AS normalized_email
    FROM my_table
    
  4. ノートブックをクリーン ルームに追加し、コラボレーターに承認して実行してもらう。 「クリーン ルームでノートブックを実行する」を参照してください。

制限事項