注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Azure Blob Filesystem (ABFS) ↗ を使用して、Foundry を OneLake ↗、Azure Data Lake Storage Gen2 (ADLS Gen2)、およびその他の対応する Azure 製品に接続します。ABFS コネクターを使用すると、ファイルを Foundry に読み込み、Foundry から Azure に書き込むことができます。
Azure Data Lake Storage Gen1 への接続には対応していません。
| 機能 | ステータス |
|---|---|
| 探索 | 🟢 一般提供 |
| 一括インポート | 🟢 一般提供 |
| インクリメンタル(差分連携) | 🟢 一般提供 |
| メディアセット | 🟢 一般提供 |
| 仮想テーブル | 🟢 一般提供 |
| エクスポートタスク | 🟡 サンセット |
| ファイルエクスポート | 🟢 一般提供 |
このコネクターは、あらゆる種類のファイルを Foundry データセットに転送できます。ファイル形式は保持され、転送中も転送後もスキーマは適用されません。データにアクセスするには、出力データセットに必要なスキーマを適用するか、下流のデータ加工を作成します。
転送可能なファイルのサイズに制限はありません。ただし、ネットワークの問題により、大規模な転送が失敗する場合があります。特に、Foundry ワーカーで実行される同期は、実行時間が2日を超えると中断されます。ネットワークの問題を避けるため、ファイルサイズを小さくし、同期の実行ごとに取り込むファイル数を制限することを推奨します。同期は、頻繁に実行されるようにスケジュール設定できます。
セットアップと設定を簡素化するため、ABFS コネクターでは直接接続ポリシーを使用する Foundry ワーカーの使用を推奨します。
Foundry でのコネクターのセットアップについては、詳しくはこちらをご覧ください。
データをインポートするには、コネクターが Azure のファイルシステムの内容を list で一覧取得し、ファイルの内容を read で読み取る必要があります。この動作は、指定した接続資格情報に関連付けられたプリンシパルの認可パターンによって実現できます。
ADLS Gen2 のアクセス制御について、詳しくはこちら ↗をご覧ください。
ABFS コネクターは、認証に関する次の設定オプションをサポートしています。推奨度の高い順に記載しています。
クライアント資格情報 ↗は、Entra ID のアプリ登録 ↗(サービスプリンシパル)を利用します。この方法は、すべての直接接続で推奨されます。次の項目でクライアント資格情報認証を設定します。
| オプション | 必須 | 説明 |
|---|---|---|
| クライアントエンドポイント | はい | 接続の認証エンドポイントです。 通常は https://login.microsoftonline.com/<directory-id>/oauth2/token の形式で、<directory-id> はサブスクリプションIDです。詳細は、Azure の公式ドキュメント ↗を参照してください。 |
| クライアントID | はい | アプリ登録の ID です。アプリケーションIDとも呼ばれます。 |
| クライアントシークレット | はい | アプリ登録で生成されたシークレットです。 |
共有アクセス署名(SAS)↗認証では、有効期間が短く、スコープが厳密に限定された資格情報を提供するトークンを使用します。これらのトークンは、サービスが必要に応じて生成し、ごく短期間だけ使用するクライアントに配布できる場合に最も有用です。
| オプション | 必須 | 説明 |
|---|---|---|
| Blob SAS トークン | はい | 共有アクセス署名トークンです。 |
コネクターには固定の SAS トークンが必要で、ストレージアカウントで認証するために有効期間の長いトークンを保存します。
SAS トークンの有効期限が切れると、手動で更新するまで同期が機能しなくなります。そのため、SAS トークンの使用は強く非推奨とし、別の認証方法の使用を推奨します。
SAS トークンを取得するには、Azure ガイド ↗に沿って進めてください。
トークンの例:
/container1/dir1?sp=r&st=2023-02-23T17:53:28Z&se=2023-02-24T01:53:28Z&spr=https&sv=2021-12-02&sr=d&sig=1gF9B%2FOnEmtYeDl6eB9tb0va1qpSBjZw3ZJuW2pMm1E%3D&sdd=1
通常は、ストレージコンテナレベルで SAS トークンを生成することを推奨します。Azure ポータルのコンテナ表示でストレージコンテナを見つけます(設定 > 共有アクセストークン)。ストレージアカウントレベルで SAS トークンを生成する必要がある場合(Azure ポータルのストレージアカウント表示のセキュリティ > ネットワーク > 共有アクセス署名)、必要最小限の権限は次のとおりです。
"Allowed services": "Blob""Allowed resource types": "Container" + "Object""Allowed permissions": "Read" + "List"SAS トークンで Azure Blob Storage に接続するには、Blob が保存されているディレクトリリソースを指定する ↗必要があります。
SAS トークンを生成するときは、必ず次のパラメーターを設定してください。
署名付きプロトコル: 接続で https を必須にするように、spr ↗ を設定することを推奨します。
署名付きリソース: アクセスを許可するリソースの種類に基づいて、値を変更します ↗。
使用する署名付きリソースが指定のディレクトリである場合は、ディレクトリの深さ ↗も必ず指定してください。接続が入れ子のディレクトリからデータを取得できるように、深さの値を大きく設定することを推奨します(たとえば、sdd=100)。
ユーザー名/パスワード ↗認証方式は OAuth プロトコルに従います。資格情報は、テナントの Azure ページ(たとえば、https://login.microsoftonline.com/<tenant-id>/oauth2/token)を使用して生成されます。<tenant-id> を接続先のテナントの ID に置き換えます。
次の設定を行います。
| オプション | 必須 | 説明 |
|---|---|---|
| クライアントエンドポイント | はい | OAuth 設定のクライアントエンドポイントです。 |
| ユーザー名 | はい | ユーザーのメールアドレスです。 |
| プロキシパスワード | はい | パスワードトークンです。 |
更新トークン ↗認可方式は OAuth プロトコルに従います。更新トークンを生成する方法は、Azure ドキュメント ↗を参照してください。
次の設定を行います。
| オプション | 必須 | 説明 |
|---|---|---|
| クライアントID | はい | クライアントIDです。Microsoft Entra ID で確認できます。 |
| 更新トークン | はい | 更新トークンです。 |
すべての Azure ストレージアカウントには、2個の共有キー ↗が付属しています。ただし、共有キーのスコープはコンテナレベルではなくストレージアカウントレベルであるため、本番環境での使用は推奨しません。共有キーにはデフォルトで管理者権限があり、ローテーションは手動操作で行います。
共有キーを取得するには、Azure ポータルで対象のストレージアカウントに移動し、セキュリティとネットワークセクションのアクセスキーを選択します。
| オプション | 必須 | 説明 |
|---|---|---|
| アカウントキー | はい | アカウントのアクセスキーです。 |
Azure のワークロード ID フェデレーション ↗認可方式は、OpenID Connect (OIDC) プロトコルに従います。表示されるソースシステムの設定手順に従って、ワークロード ID フェデレーションを設定してください。OIDC と Foundry の連携の詳細については、ドキュメントを参照してください。
| オプション | 必須? | 説明 |
|---|---|---|
| テナントID | はい | テナントIDは Microsoft Entra ID ↗ から取得できます。 |
| クライアントID | はい | クライアントIDは Microsoft Entra ID で確認できます。 |
この認証方式は、レガシーの Agent ワーカーソースでのみ利用可能です。新しいソースには、クライアント資格情報を使用してください。
Azure マネージド ID ↗ では、Foundry に資格情報を保存する必要はありません。データへの接続に使用するマネージド ID には、基盤となるストレージに対する適切な権限が必要です。
| オプション | 必須? | 説明 |
|---|---|---|
| テナントID | いいえ | テナントIDは Microsoft Entra ID ↗ から取得できます。 |
| クライアントID | いいえ | Agent が実行されている仮想マシン(VM)に、複数のマネージド ID(システムまたはユーザーによって割り当てられたもの)がアタッチされている場合は、ストレージへの接続に使用する ID を指定します。 |
マネージド ID 認証方式は、仮想マシン(VM)上のすべてのプロセスから利用可能なローカル REST エンドポイントに依存します。この方式は、同じ Azure テナント内の VM にデプロイされた Agent を介して接続する場合にのみ機能します。
Foundry で Azure 接続を実行する場合、Foundry がソースと通信できるようにネットワークアクセスを設定する必要があります。このプロセスは次の2つのステップで構成されます。
abfss://file_system@account_name.dfs.core.windows.net に接続する場合、ストレージアカウントのドメインは account_name.dfs.core.windows.net です。Data Connection アプリケーションは、ソースに指定された接続情報に基づいて、適切なエグレスポリシーを提案します。Foundry エンロールメントと同じ Azure リージョンでホストされている Azure ストレージバケットへのアクセスを設定する場合は、PrivateLink を介して、上記とは異なるネットワーク設定を行う必要があります。この場合は、Palantir 管理者にお問い合わせください。
コネクターには、次の追加の設定オプションがあります。
| オプション | 必須? | 説明 |
|---|---|---|
| ルートディレクトリ | はい | データの読み取り元および書き込み先となるディレクトリ。 |
| カタログ | いいえ | このストレージコンテナに保存されたテーブルのカタログを設定します。詳細については、仮想テーブルを参照してください。 |
ルートディレクトリでは、次の形式がサポートされています。
Copied!1abfss://file_system@account_name.dfs.core.windows.net/<directory>/
Copied!1abfss://file_system@onelake.dfs.fabric.microsoft.com/path/to/directory/
例:
abfss://file_system@account_name.dfs.core.windows.net/ ↗ は、そのファイルシステムのすべての内容にアクセスします。abfss://file_system@account_name.dfs.core.windows.net/path/to/directory/ ↗ は、特定のディレクトリにアクセスします。abfss://file_system@onelake.dfs.fabric.microsoft.com/path/to/directory/ ↗ は、Microsoft OneLake の特定のディレクトリにアクセスします。SAS トークンで認証して Blob Storage にアクセスする場合は、ルートディレクトリの設定でディレクトリを指定する必要があります。適切にアクセスできるように、すべての内容を指定したディレクトリのサブフォルダー内に配置する必要があります。
ABFS コネクターは、ファイルベースの同期インターフェースを使用します。
ABFS にエクスポートするには、まず ABFS コネクターのエクスポートを有効にします。次に、新しいエクスポートを作成します。
エクスポートタスクはレガシー機能であり、新規の実装には推奨していません。新しいエクスポートには、推奨されるエクスポートワークフローを使用してください。このドキュメントは、既存のエクスポートタスクを引き続き使用しているユーザー向けに提供されています。
データのエクスポートを開始するには、エクスポートタスクを設定する必要があります。エクスポート先のコネクターが含まれるプロジェクトフォルダーに移動します。コネクター名を右クリックし、Data Connection タスクを作成を選択します。
Data Connection の表示の左側パネルで、次の操作を行います。
inputDataset という名前の入力を追加します。入力データセットは、エクスポート対象の Foundry データセットです。outputDataset という名前の出力を追加します。出力データセットは、タスクの実行、スケジュール設定、監視に使用されます。左側パネルに表示されるコネクターと入力データセットのラベルには、YAML で定義された名前は反映されません。
エクスポートタスクの YAML を作成する際は、次のオプションを使用します。
| オプション | 必須かどうか | 説明 |
|---|---|---|
directoryPath | はい | ファイルの書き込み先ディレクトリです。パスの末尾は / である必要があります。 |
excludePaths | いいえ | 正規表現のリストです。これらの式に名前が一致するファイルはエクスポートされません。 |
rewritePaths | いいえ | 詳細については、以下のセクションを参照してください。 |
uploadConfirmation | いいえ | 値が exportedFiles の場合、出力データセットにはエクスポートされたファイルのリストが含まれます。 |
createTransactionFolders | いいえ | 有効にすると、指定された directoryPath 内のサブフォルダーにデータが書き込まれます。サブフォルダーには、Foundry でエクスポートされたトランザクションごとに一意の名前が付きます。この名前は、Foundry でトランザクションがコミットされた時刻に基づきます。 |
incrementalType | いいえ | インクリメンタルにビルドされるデータセットでは、incremental に設定すると、前回のエクスポート以降に発生したトランザクションのみがエクスポートされます。 |
flagFile | いいえ | 詳細については、以下のセクションを参照してください。 |
spanMultipleViews | いいえ | true の場合、Foundry の複数のトランザクションが一度にエクスポートされます。false の場合、1回のビルドで一度にエクスポートされるのは1個のトランザクションのみです。インクリメンタル(差分連携)が有効な場合、最も古いトランザクションのファイルが最初にエクスポートされます。 |
rewritePaths最初のキーがファイル名に一致する場合、キー内のキャプチャグループは値に置き換えられます。値自体には、ファイル名にメタデータを追加するための部分を含めることができます。
値に次の内容が含まれる場合:
${dt:javaDateExpression}:値のこの部分は、ファイルがエクスポートされる時点のタイムスタンプに置き換えられます。javaDateExpression は DateTimeFormatter ↗ のパターンに従います。${transaction}:値のこの部分は、このファイルを含むトランザクションの Foundry トランザクションIDに置き換えられます。${dataset}:値のこの部分は、このファイルを含むデータセットの Foundry データセットIDに置き換えられます。例:
Foundry データセット内の「spark/file_name」という名前のファイルが、ID が transaction_id のトランザクションに含まれ、データセットIDが dataset_id である場合を考えます。キーとして式 fi.*ame を、値として file_${dt:DD-MM-YYYY}-${transaction}-${dataset}_end を使用すると、ファイルが Azure に書き込まれる際に、spark/file_79-03-2023-transaction_id-dataset_id_end として保存されます。
コネクターは、特定のビルドのすべてのデータがコピーされた後に、空のフラグファイルを Azure Storage に書き込むことができます。この空のファイルは、内容を利用する準備が整い、以後変更されないことを示します。フラグファイルは directoryPath に書き込まれます。ただし、createTransactionFolders が有効な場合、内容が書き込まれたフォルダーごとにフラグファイルが作成されます。フラグファイルが有効で、その名前が confirmation.txt の場合、ビルドでエクスポートするファイルの書き込みが完了した後に、すべてのフラグファイルが一度に書き込まれます。フラグファイルは、サブフォルダーがエクスポートされた時点ではなく、ビルドの最後に書き込まれます。
Azure 内のファイルがフラグファイルより新しい場合、通常は、前回のエクスポートが成功しなかったか、そのフォルダーでエクスポートが進行中であることを示します。
エクスポートタスクを設定したら、右上隅の保存を選択します。
このセクションでは、Azure Data Lake Storage Gen 2(Azure Blob Storage)ソースの仮想テーブルを使用する際の詳細について説明します。Foundry データセットに同期する場合、このセクションは適用されません。
次のテーブルは、ADLS Gen2 でサポートされている仮想テーブルの機能を示しています。
| 機能 | ステータス |
|---|---|
| 一括登録 | 🔴 利用不可 |
| 自動登録 | 🔴 利用不可 |
| テーブル入力 | 🟢 一般提供:Code Repositories、Pipeline Builder での Avro ↗、Delta ↗、Iceberg ↗、Parquet ↗ |
| テーブル出力 | 🟢 一般提供:Code Repositories、Pipeline Builder での Avro ↗、Delta ↗、Iceberg ↗、Parquet ↗ |
| インクリメンタル(差分処理)パイプライン | 🟢 Delta テーブルで一般提供:APPEND のみ(詳細)🟢 Iceberg テーブルで一般提供: APPEND のみ(詳細)🔴 Parquet テーブルでは利用不可 |
| コンピュートプッシュダウン | 🔴 利用不可 |
ADLS Gen2 に保存されたテーブルを入力または出力として使用できる、サポート対象の Foundry ワークフローの詳細については、仮想テーブルのドキュメントを参照してください。
仮想テーブルを使用する際は、次のソース設定の要件に留意してください。
username/password、ワークロード ID フェデレーションのいずれかを使用する必要があります。仮想テーブルを使用する場合、ほかの資格情報の選択肢は利用できません。仮想テーブルを元にしたパイプラインでインクリメンタル処理を有効にするには、ソースの Delta テーブルで Change Data Feed ↗ が有効になっていることを確認してください。Python トランスフォームの current および added 読み取りモードに対応しています。_change_type、_commit_version、_commit_timestamp 列が Python トランスフォームで利用可能になります。
Apache Iceberg テーブルを元にした仮想テーブルを読み込むには、Iceberg カタログが必要です。Iceberg カタログの詳細については、Apache Iceberg のドキュメント ↗を参照してください。ソースに登録されたすべての Iceberg テーブルは、同じ Iceberg カタログを使用する必要があります。
デフォルトでは、S3 内の Iceberg メタデータファイルを使用してテーブルが作成されます。テーブルを登録する際は、これらのメタデータファイルの場所を示す warehousePath を指定する必要があります。
Databricks で Delta Universal Format(UniForm)を使用する場合、Unity Catalog ↗ を Iceberg カタログとして使用できます。この統合の詳細については、Databricks のドキュメント ↗を参照してください。カタログは、ソースの接続情報タブで設定できます。Unity Catalog に接続するには、エンドポイントと個人用アクセストークンを指定する必要があります。テーブルは catalog_name.schema_name.table_name という命名パターンで登録してください。
Polaris ↗ は、Azure Data Lake Storage Gen2 に保存されたテーブルの Iceberg カタログとして使用できます。カタログは、ソースの接続情報タブで設定できます。

インクリメンタル処理は Iceberg のインクリメンタル読み取り ↗を使用し、現在は追加のみに対応しています。Python トランスフォームの current および added 読み取りモードに対応しています。
Parquet を使用する仮想テーブルは、スキーマ推論を使用します。スキーマの判定には最大100個のファイルが使用されます。
既知のエラーのトラブルシューティングには、以下のセクションを参照してください。
Blob Storage ではなく、DFS の場所を使用していることを確認してください。
例:
Copied!1 2 3 4# 正しい例: abfsRootDirectory: 'abfss://<account_name>.dfs.core.windows.net/' # 誤った例: abfsRootDirectory: 'abfss://<account_name>.blob.core.windows.net/'
magritteabfs.source.org.apache.hadoop.fs.FileAlreadyExistsException: Operation failed:
"This endpoint does not support BlobStorageEvents or SoftDelete. Please disable these
account features if you would like to use this endpoint.", 409, HEAD,
https://STORAGE_ACCOUNT_NAME.dfs.core.windows.net/CONTAINER_NAME/?
upn=false&action=getAccessControl&timeout=90
このエラーは、Hadoop ABFS が現在、SoftDelete を有効にしたアカウントに対応していない ↗ために発生します。唯一の解決策は、ストレージアカウントでこの機能を無効にすることです。
Client Credentials 認証メカニズムには既知の問題 ↗があります。+ または / を含むサービスプリンシパルのクライアントシークレットは、Data Connection のインターフェースを使用して設定した場合、機能しません。この問題を解決するには、+ または / を含まない新しい資格情報を作成します。この問題が解消しない場合は、Palantir の担当者にお問い合わせください。
トラブルシューティングでは、アクセスの問題とネットワークの問題を切り分けることを推奨します。そのためには、まずソースデータへのアクセスを(Data Connection の外部で)独立してテストします。次に、マネージド ID ↗ を使用して、Data Connection の VM からストレージアカウントへの接続を正常に確立できることを確認します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16# ローカルのメタデータエンドポイントを使って新しいトークンを取得します。 # マシンに jq がない場合は、API 呼び出しの結果に含まれる access_token キーの値を # TOKEN 環境変数に手動でエクスポートできます。 export TOKEN=`curl 'http://IP_ADDRESS_OF_VM/metadata/identity/oauth2/token?api-version=2018-02-01 &resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq '.access_token' | sed 's/"//g'` # トークンが正しく設定されていることを確認してください。これは OAuth2 トークンである必要があります。たとえば `eyJ0e...`(引用符なし)です。 echo $TOKEN # コンテナのルートの内容を一覧表示します。 curl -XGET -H "x-ms-version: 2018-11-09" -H "Authorization: Bearer $TOKEN" "https://STORAGE_ACCOUNT_NAME.dfs.core.windows.net/CONTAINER_NAME?resource=filesystem&recursive=false" # コンテナ内のファイルの内容を表示します。 curl -XGET -H "x-ms-version: 2018-11-09" -H "Authorization: Bearer $TOKEN" "https://STORAGE_ACCOUNT_NAME.dfs.core.windows.net/CONTAINER_NAME/path/to/file.txt"
Azure マネージド ID の場合、このメッセージは、VM 上でトークンの取得に使用するメタデータエンドポイントに問題があることを示している可能性が高いです。VM 自体が異常な状態にあるか、マネージド ID がまだ VM に割り当てられていない可能性があります。これをデバッグするには、上のセクションにある cURL コマンドを使用して、VM からトークンの取得を試みます。
ページに For support, please email us at... というテキストが含まれている場合、エラーの原因はネットワークの問題である可能性があります。Foundry と Agent がインストールされている VM の間、および Agent の VM とソースの間で、プロキシが適切に設定されていることを確認してください。ABFS プラグインはプロキシ設定を管理せず、Agent の設定に依存します。インターフェース上で Agent が正常と表示され、VM からターミナルを使用して Azure 上のファイルにアクセスできる場合は、Issue を作成して追加のサポートを依頼してください。
このエラーは通常、権限が不足した SAS トークンが生成された場合に発生します。同期を作成しようとすると、ソース全体のプレビューは期待されるとおりに表示されますが、フィルターで範囲を絞り込んだプレビューではエラーが発生します。SAS トークンの生成方法については、共有アクセス署名のセクションを参照してください。
export-abfs-task を使用しているときに、指定した directoryPath ではなく root/opt/palantir/magritte-bootvisor/var/data/processes/bootstrapper/ にファイルがエクスポートされる場合は、ディレクトリ URL の末尾に / があることを確認してください。
例:
Copied!1 2 3 4# 正しい例: abfsRootDirectory: 'abfss://STORAGE_ACCOUNT_NAME.dfs.core.windows.net/' # 誤った例: abfsRootDirectory: 'abfss://STORAGE_ACCOUNT_NAME.blob.core.windows.net'