ファイル到着トリガーを使用すると、Amazon S3、Azure Storage、Google Cloud Storage などの外部の場所に新しいファイルが到着したときにジョブの実行をトリガーできます。 この機能は、スケジュールされたジョブの効率が、不規則な新しいデータ到着によって損なわれる場合に便利です。
ファイル到着トリガーのしくみ
ファイル到着トリガーは、新しいファイルをベストエフォートで毎分チェックしますが、この動作は基盤となるクラウド ストレージのパフォーマンスによって影響を受ける場合があります。 ファイル到着トリガーには、ストレージ ロケーションのファイル一覧取得にかかるクラウド プロバイダーの料金以外、追加コストは発生しません。
ファイル到着トリガーは、Unity Catalog の外部ロケーションまたはボリュームのルート、あるいはそのサブパスを監視するよう構成できます。 たとえば、Unity カタログ ボリューム /Volumes/mycatalog/myschema/myvolume/
の場合、ファイル到着トリガーの有効なパスを次に示します。
/Volumes/mycatalog/myschema/myvolume/
/Volumes/mycatalog/myschema/myvolume/mydirectory/
トリガーは、構成したロケーションのすべてのサブディレクトリを再帰的にチェックし、新しいファイルの有無を確認します。 たとえば、場所 /Volumes/mycatalog/myschema/myvolume/mydirectory/
のファイル到着トリガーを作成すると、この場所には次のサブディレクトリがあります。
/Volumes/mycatalog/myschema/myvolume/mydirectory/subdirA
/Volumes/mycatalog/myschema/myvolume/mydirectory/subdirB
/Volumes/mycatalog/myschema/myvolume/mydirectory/subdirC/subdirD
トリガーは mydirectory
、subdirA
、subdirB
、subdirC
、subdirC/subdirD
に新しいファイルがないかを確認します。
ファイル イベントを使用したファイル到着トリガー
パフォーマンスを最適化するために、 ファイル イベントに対して外部の場所を有効にする必要があります。 外部の場所に対してファイル イベントが有効になっている場合、Azure Databricks は内部サービスを使用して、クラウド プロバイダーからの変更通知を処理してインジェスト メタデータを追跡します。 このサービスでは、サービスによって決定されたローリングリテンション期間にわたって作成または更新された最新のファイルのメタデータが保持され、ファイル処理の効率が向上します。
外部の場所でファイル イベントを有効にしてから数分以内に、その外部の場所の対象となるパスを監視する既存のファイル到着トリガーがファイル イベントの有効化の恩恵を受け始め、新しいトリガーは数秒以内にメリットを得られます。
外部の場所でのファイル イベントのパフォーマンスと容量の利点の詳細については、「 制限事項」を参照してください。
開始する前に
ファイル到着トリガーを使用するには、以下が必要です。
ワークスペースで Unity カタログが有効になっている必要があります。
ストレージの場所として、Unity Catalogで設定されたボリュームまたは外部の場所を使用する必要があります。 「Unity カタログ ボリュームとは」を参照し、クラウド ストレージを Azure Databricks に接続するための外部の場所を作成します。
Databricks では、 マネージド ファイル イベントの外部の場所を有効にすることをお勧めします。 これらの外部の場所のボリュームは、既定でファイル イベントのサポートを受けます。 ファイル イベントを有効にするには、外部の場所の所有者であるか、外部の場所に対する
MANAGE
特権を持っている必要があります。 ファイル イベントの利点については、「ファイル イベントを使用した ファイル到着トリガー」を参照してください。ストレージの場所に対する
READ
権限と、ジョブに対する CAN MANAGE 権限が必要です。 ジョブのアクセス許可については、「ジョブの ACL」を参照してください。
ファイル到着トリガーを追加する
ファイル到着トリガーをジョブに追加するには:
- Azure Databricks ワークスペースのサイドバーで、
ジョブ & パイプライン をクリックします。 - 必要に応じて、ジョブ と 私が所有 フィルターを選択します。
- ジョブの [名前] リンクをクリックします。
- 右側の [ジョブの詳細] パネルで [トリガーを追加] をクリックします。
- [トリガーの種類] で [ファイル到着] を選択します。
- [ストレージ ロケーション] には、監視対象とする Unity Catalog の外部ロケーションまたはボリュームのルート、あるいはそのサブパスの URL を入力します。
- (省略可能) 詳細オプションを構成します。
- トリガー間の最小待機時間 (秒): 前回の実行の完了後、次の実行をトリガーするまでの最小待機時間です。 この時間内に到着したファイルにより、待機時間が経過した後にのみ、実行がトリガーされます。 この設定は、実行の頻度を制御するために使用します。
- 最後の変更後の待機時間 (秒): ファイル到着後、実行をトリガーするまでの待機時間です。 この期間内に別のファイルが到着すると、タイマーがリセットされます。 ファイルがまとめて到着し、それらすべてを一括で処理する必要がある場合に、この設定を使用します。
- 構成をテストするには、[テスト接続] をクリックします。
- 保存 をクリックします。
失敗したファイル到着トリガーの通知を受信する
ファイル到着トリガーの評価が失敗した場合に通知を受け取るには、ジョブ失敗時の電子メールまたはシステム宛先通知を構成します。 「ジョブについての通知を追加する」をご覧ください。
制限
- ファイル到着トリガーに使用されるパスには、外部テーブルやカタログとスキーマの管理された場所を含めてはなりません。
- ファイル到着トリガーで使用するパスには、ワイルドカード (
*
や?
など) を含めることはできません。 - ストレージの場所が Unity カタログの外部の場所として構成されていて、その外部の場所が ファイル イベントに対して有効になっている場合:
- Azure Databricks ワークスペースでは、ファイル到着トリガーを使用して最大 1,000 個のジョブを構成できます。
- 保存場所のファイル数に制限はありません。
- トリガーがロケーションのサブパスを監視している場合、外部ロケーションのボリュームであるかどうかに関わらず、ルートロケーションにおける変更の数がトリガーの処理時間制限を超過する原因となる可能性があります。 この場合、トリガーはエラー状態に設定されます。 これを防ぐには、場所のルートを監視するようにトリガーを構成します。 たとえば、サブパスで Unity カタログ ボリュームを作成し、ボリュームのルートでトリガーを構成できます。
- 既存のファイルが変更され、そのメタデータがローリングリテンション期間を過ぎると、その変更は新しいファイル到着として扱われ、ジョブの実行がトリガーされます。 これを防ぐには、変更できないファイルのみを取り込むか、自動ローダーでファイル到着トリガーを使用してインジェストの進行状況を追跡できます。
- ファイル イベントに対してストレージの場所が有効になっていない場合:
- 新しいファイルでのみ実行をトリガーします。 既存のファイルを同じ名前のファイルで上書きしても、実行はトリガーされません。
- Azure Databricks ワークスペース内のこのような場所で、ファイル到着トリガーを使用して最大 50 個のジョブを構成できます。
- ストレージの場所には、最大 10,000 個のファイルを含めることができます。 構成したストレージ ロケーションが Unity Catalog の外部ロケーションまたはボリュームのサブパスである場合、10,000 ファイルの制限はサブパスに適用され、ストレージ ロケーションのルートには適用されません。 たとえば、ストレージ ロケーションのルートではサブディレクトリを含めて 10,000 ファイルを超えても問題ありませんが、構成したサブディレクトリでは 10,000 ファイルを超えることはできません。
ファイル イベントの制限事項も参照してください。