注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Azure Blob Filesystem(ABFS) ↗を使用して、FoundryをAzure Data Lake Storage Gen2(ADLS Gen2)や他の対象となるAzure製品に接続します。ABFSコネクターを使用すると、ファイルをFoundryに読み込んだり、FoundryからAzureに書き込むことができます。
Azure Data Lake Storage Gen1への接続はサポートされていません。
機能 | ステータス |
---|---|
探索 | 🟢 一般利用可能 |
一括インポート | 🟢 一般利用可能 |
インクリメンタル | 🟢 一般利用可能 |
メディアセット | 🟢 一般利用可能 |
仮想テーブル | 🟢 一般利用可能 |
エクスポートタスク | 🟡 サンセット |
ファイルエクスポート | 🟢 一般利用可能 |
コネクターを使用して、任意のタイプのファイルをFoundryデータセットに転送できます。ファイル形式は保持され、転送中や転送後にスキーマは適用されません。必要なスキーマを出力データセットに適用するか、データにアクセスするための下流変換を書きます。
転送可能なファイルのサイズに制限はありません。しかし、ネットワークの問題により、大規模な転送が失敗することがあります。特に、2日以上かかる直接のクラウド同期は中断されます。ネットワークの問題を避けるために、私たちは小さなファイルサイズの使用と、同期の各実行で取り込まれるファイル数の制限を推奨します。同期は頻繁に実行するようにスケジュール設定できます。
私たちは、ABFSコネクタの設定と構成を簡素化するために、直接接続の使用を推奨します。
Foundryでのコネクタの設定については、さらに詳しく学んでください。
データをインポートするためには、コネクタがファイルシステムの内容をlist
し、Azureでファイルの内容をread
する必要があります。この動作は、提供された接続資格情報に関連するプリンシパルの認証パターンを通じて達成できます。
Storage Blob Data Reader
↗の役割が必要です。Read
ACLを、コンテナのルートからファイルの場所までのすべてのパスディレクトリにExecute
ACLを必要とします。ADLS Gen2のアクセス制御について詳しく学ぶ ↗。
ABFSコネクタは、以下の認証のための設定オプションをサポートしています。推奨度の高い順にリスト化しています:
Azure 管理 ID ↗ を使用して認証することをお勧めします。この認証メカニズムは、資格情報を Foundry に保存する必要がありません。データに接続するための管理 ID は、基礎となるストレージに適切な権限を持つ必要があります。
オプション | 必須? | 説明 |
---|---|---|
Tenant ID | いいえ | Tenant ID は Microsoft Entra ID ↗ から取得できます。 |
Client ID | いいえ | 複数の管理 ID(システムまたはユーザーによって割り当てられたもの)がエージェントが実行されている仮想マシン (VM) にアタッチされていた場合、ストレージに接続するために使用するべき ID を提供します。 |
管理 ID 認証方法は、仮想マシン (VM) 上のすべてのプロセスで利用可能なローカル REST エンドポイントに依存しています。この方法は、同じ Azure テナント内の VM 上にデプロイされたエージェントを経由して接続が行われる場合にのみ機能します。
クライアント資格情報 ↗ は Entra ID の アプリ登録 ↗ (サービスプリンシパル) に依存します。この方法はすべての直接接続に推奨されます。以下のフィールドでクライアント資格情報の認証を設定します:
オプション | 必須? | 説明 |
---|---|---|
Client endpoint | はい | ユーザーの直接接続のための認証エンドポイント。 通常、 https://login.microsoftonline.com/<directory-id>/oauth2/token の形式を取ります。ここで、<directory-id> はサブスクリプション ID です。詳細は Azure の 公式ドキュメンテーション ↗ を参照してください。 |
Client ID | はい | アプリ登録の ID。別名、アプリケーション ID とも呼ばれます。 |
Client secret | はい | アプリ登録で生成された秘密。 |
共有アクセス署名 (SAS) ↗ 認証は、短期間で厳密に制限された資格情報を提供するトークンを使用します。これらのトークンは、サービスが必要に応じて生成し、非常に限られた期間使用するクライアントに配布する場合に最も便利です。
オプション | 必須? | 説明 |
---|---|---|
Blob SAS token | はい | 共有アクセス署名トークン。 |
コネクターは静的な 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ポータルのストレージアカウントビューで セキュリティ > ネットワーキング > 共有アクセス署名 にあります)、最小限の権限セットは以下の通りです:
"許可されるサービス": "Blob"
"許可されるリソースタイプ": "Container" + "Object"
"許可される権限": "Read" + "List"
SASトークンを使用してAzure Blob Storageに接続するには、Blobが保存されているリソースのディレクトリを指定 ↗する必要があります。
SASトークンを生成する際には、以下のパラメータを設定するようにしてください:
署名プロトコル: spr
↗を設定して、接続にhttps
を強制することを推奨します。
署名リソース: 値を変更 ↗して、アクセスが許可されているリソースタイプに基づきます。
使用中の署名リソースが指定ディレクトリである場合、ディレクトリ深度 ↗も指定されていることを確認してください。ネストしたディレクトリからデータを取得する接続を許可するために、高い深度値を設定することを推奨します(例えば、sdd=100
)。
ユーザー名/パスワード ↗ 認証方法は、OAuthプロトコルに従います。資格情報は、ユーザーのテナントのAzureページ(例:https://login.microsoftonline.com/<tenant-id>/oauth2/token
)を使用して生成されます。<tenant-id>
を接続しているテナントのIDに置き換えてください。
以下の設定を行ってください:
オプション | 必須? | 説明 |
---|---|---|
Client endpoint | はい | OAuth設定からのクライアントエンドポイント。 |
Username | はい | ユーザーのメールアドレス。 |
Proxy password | はい | パスワードトークン。 |
リフレッシュトークン ↗ 認証方法もOAuthプロトコルに従います。Azureのドキュメンテーション ↗ を使用してリフレッシュトークンの生成方法を学んでください。
以下の設定を行ってください:
オプション | 必須? | 説明 |
---|---|---|
Client ID | はい | クライアントID。Microsoft Entra IDで見つけることができます。 |
Refresh Token | はい | リフレッシュトークン。 |
すべてのAzureストレージアカウントには、2つの共有キー ↗が付属しています。ただし、共有キーはストレージアカウントレベルでスコープが設定されているため、本番環境での使用はお勧めしません。共有キーはデフォルトで管理者権限を持っており、その回転は手動操作です。
共有キーを取得するには、Azureポータルで目的のストレージアカウントに移動し、セキュリティ + ネットワーキング セクションの下で アクセスキー を選択します。
オプション | 必須? | 説明 |
---|---|---|
アカウントキー | はい | アカウントのアクセスキー。 |
AzureのワークロードID連携 ↗認証方法は、OpenID Connect(OIDC)プロトコルに従います。表示されるソースシステムの設定手順に従って、ワークロードID連携を設定します。OIDCがFoundryとどのように動作するかについては、当社のドキュメンテーションを参照してください。
オプション | 必須? | 説明 |
---|---|---|
テナントID | はい | テナントIDは、Microsoft Entra ID ↗から取得できます。 |
クライアントID | はい | クライアントIDはMicrosoft Entra IDで見つけることができます。 |
Azureへの直接接続を設定する際には、Foundryがソースと通信するためのネットワークアクセスを設定する必要があります。これは2ステップのプロセスです:
port 443
。例えば、abfss://file_system@account_name.dfs.core.windows.net
に接続している場合、ストレージアカウントのドメインはaccount_name.dfs.core.windows.net
です。Data Connectionアプリケーションは、ソースで提供された接続詳細に基づいて適切な出口ポリシーを提案します。Foundryの登録と同じAzureリージョンでホストされているAzureストレージバケットへのアクセスを設定している場合、上記とは異なるネットワーキング設定をPrivateLink経由で設定する必要があります。この場合は、Palantir管理者に連絡して支援を求めてください。
コネクタには以下の追加設定オプションがあります:
オプション | 必須? | 説明 |
---|---|---|
Root directory | はい | データを読み書きするディレクトリ。 |
Catalog | いいえ | この S3 バケットに保存されているテーブルのカタログを設定します。詳細は Virtual tables を参照してください。 |
ルートディレクトリは以下の形式で指定する必要があります: abfss://file_system@account_name.dfs.core.windows.net/<directory>
。
例:
abfss://file_system@account_name.dfs.core.windows.net/
↗ そのファイルシステムのすべてのコンテンツにアクセスする。abfss://file_system@account_name.dfs.core.windows.net/path/to/directory
↗ 特定のディレクトリにアクセスする。SAS トークンを使用して認証し、Blob ストレージにアクセスする場合、ルートディレクトリ設定でディレクトリを指定する必要があります。すべてのコンテンツは指定したディレクトリのサブフォルダー内にある必要があります、これにより適切なアクセスが確保されます。
ABFS コネクタは、file-based sync interface を使用します。
ABFSにエクスポートするには、まずエクスポートを有効にします。次に、新しいエクスポートを作成します。
上記のエクスポートワークフローが推奨される一方で、既存のエクスポートが最初にエクスポートタスクとして設定されていた可能性があります。一般的に、エクスポートタスクを使用してデータを外部ソースに書き戻すことはお勧めしません。しかし、エクスポートタスクは特定のFoundry登録で一部のソースタイプに対して利用可能で、サポートされている場合があります。
以下のエクスポートタスクのドキュメンテーションは、まだ推奨されるエクスポートワークフローに移行していないエクスポートタスクのユーザー向けです。
コネクタは、FoundryデータセットからAzureファイルシステム上の任意の場所にファイルをコピーできます。
データのエクスポートを開始するには、エクスポートタスクを設定する必要があります。エクスポートしたいコネクタを含むプロジェクトフォルダに移動します。コネクタ名を右クリックし、Create Data Connection Task
を選択します。
データコネクションビューの左パネルで:
Source
の名前が使用するコネクタと一致することを確認します。inputDataset
という名前のInput
を追加します。input datasetはエクスポートされるFoundryデータセットです。outputDataset
という名前のOutput
を追加します。output datasetはタスクの実行、スケジューリング、モニタリングに使用されます。左側のパネルに表示されるコネクタと入力データセットのラベルは、YAMLで定義した名前を反映していません。
エクスポートタスクのYAMLを作成する際には、以下のオプションを使用します:
オプション | 必須? | 説明 |
---|---|---|
directoryPath | はい | ファイルが書き込まれるディレクトリ。パスは末尾に/ で終わる必要があります。 |
excludePaths | いいえ | 正規表現のリスト;これらの表現に一致する名前のファイルはエクスポートされません。 |
rewritePaths | いいえ | 詳細は以下のセクションを参照してください。 |
uploadConfirmation | いいえ | 値がexportedFiles の場合、出力データセットにはエクスポートされたファイルのリストが含まれます。 |
createTransactionFolders | いいえ | 有効にすると、データは指定されたdirectoryPath 内のサブフォルダに書き込まれます。各サブフォルダはFoundryでの各エクスポートトランザクションに対して一意の名前を持ち、その名前はトランザクションがFoundryでコミットされた時間に基づいています。 |
incrementalType | いいえ | データセットがインクリメンタルに構築される場合、前回のエクスポート以降に発生したトランザクションのみをエクスポートするようにincremental に設定します。 |
flagFile | いいえ | 詳細は以下のセクションを参照してください。 |
spanMultipleViews | いいえ | true の場合、Foundryの複数のトランザクションが一度にエクスポートされます。false の場合、単一のビルドは一度に一つのトランザクションのみをエクスポートします。インクリメンタルが有効になっている場合、最も古いトランザクションのファイルが最初にエクスポートされます。 |
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ストレージに空のフラグファイルを書き込むことができます。空のファイルは、内容が消費可能であり、これ以上変更されないことを示します。フラグファイルはdirectoryPath
に書き込まれます。ただし、createTransactionFolders
が有効になっている場合、内容が書き込まれた各フォルダーにフラグファイルが作成されます。フラグファイルが有効であり、フラグファイルがconfirmation.txt
と呼ばれる場合、すべてのフラグファイルは、ビルドでエクスポートされるファイルが書き込まれた後に一度に書き込まれます。
フラグファイルは、サブフォルダーがエクスポートされた時ではなく、ビルドの終了時に書き込まれます。
Azureのファイルがフラグファイルより新しい場合、通常は前回のエクスポートが成功していないか、そのフォルダーのエクスポートが進行中であることを示します。
エクスポートタスクを設定した後、右上のSaveを選択します。
このセクションでは、Azure Data Lake Storage Gen 2(Azure Blob Storage)ソースからのバーチャルテーブルの使用に関する追加の詳細を提供します。このセクションは、Foundryデータセットへの同期時には適用されません。
バーチャルテーブル機能 | ステータス |
---|---|
ソースフォーマット | 🟢 一般的に利用可能:Avro ↗、Delta ↗、Iceberg ↗、Parquet ↗ |
手動登録 | 🟢 一般的に利用可能 |
自動登録 | 🔴 利用不可能 |
プッシュダウンコンピューティング | 🔴 利用不可能 |
インクリメンタルパイプラインサポート | 🟢 Deltaテーブルについては一般的に利用可能:APPEND のみ (詳細)🟢 Icebergテーブルについては一般的に利用可能: APPEND のみ (詳細)🔴 Parquetテーブルについては利用不可能 |
バーチャルテーブルを使用する際は、以下のソース設定要件を覚えておいてください:
client credentials
、username/password
、またはworkload identity federation
のいずれかを使用する必要があります。バーチャルテーブルを使用する際には、他の資格情報オプションはサポートされていません。バーチャルテーブルを利用したパイプラインでインクリメンタルサポートを有効にするには、ソースの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
を提供する必要があります。
Unity Catalog ↗は、DatabricksでDelta Universal Format (UniForm)を使用する際にIcebergカタログとして使用できます。この統合の詳細については、Databricksドキュメント ↗をご覧ください。カタログはソースのConnection Detailsタブで設定できます。Unity Catalogに接続するために、エンドポイントとパーソナルアクセストークンを提供する必要があります。テーブルはcatalog_name.schema_name.table_name
の命名パターンを使用して登録する必要があります。
インクリメンタルサポートはIcebergのIncremental Reads ↗に依存しており、現在は追加のみです。Pythonトランスフォームのcurrent
とadded
の読み取りモードがサポートされています。
Parquetを使用したバーチャルテーブルはスキーマ推定に依存します。スキーマを決定するために最大100ファイルが使用されます。
以下のセクションを使用して、既知のエラーのトラブルシューティングを行います。
DFSロケーションを使用していること、blobストレージを使用していないことを確認してください。
例:
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
認証メカニズムには既知の問題 ↗があります。サービスプリンシパルクライアントシークレットに+
または/
が含まれている場合、データ接続インターフェースを使用して設定すると動作しません。この問題を解決するには、+
または/
を含まない新しい資格情報を作成します。この問題が続く場合は、Palantir代表に連絡してください。
トラブルシューティングを行う際、アクセス問題とネットワーク問題を分離することをお勧めします。これを行うには、まずソースデータへのアクセスを独立して(データ接続の外部で)テストします。次に、管理されたアイデンティティ ↗がデータ接続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 Managed Identity
については、このメッセージは通常、VMでトークンを取得するために使用されるメタデータエンドポイントに問題があることを意味します。VM自体が不良な状態にあるか、管理されたアイデンティティがまだVMにアタッチされていない可能性があります。これをデバッグするには、上記のセクションで記述されているcURLコマンドを使用してVMからトークンを取得しようとします。
ページにFor support, please email us at...
というテキストが含まれている場合、エラーはネットワーク問題から発生する可能性があります。FoundryとエージェントがインストールされたVMの間、およびエージェントVMとソースの間でプロキシが正しく設定されていることを確認します。エージェントがインターフェースで健康的に見え、VMを使用して端末からAzureのファイルにアクセスできる場合は、追加の支援を求めて問題を提出してください。
ABFSプラグインはプロキシ設定を管理せず、エージェントの設定に依存します。
このエラーは通常、SASトークンが不十分な権限で生成された場合に発生します。同期を作成しようとすると、ソース全体のプレビューが期待通りに表示されますが、フィルターを絞り込んだプレビューではエラーが発生します。SASトークンの生成方法については、共有アクセスシグネチャセクションを参照してください。
export-abfs-task
を使用している場合、ファイルがroot/opt/palantir/magritte-bootvisor/var/data/processes/bootstrapper/
にエクスポートされ、指定したdirectoryPath
ではない場合、ディレクトリURLの末尾に/
があることを確認してください。
例:
Copied!1 2 3 4
# 正しい: abfsRootDirectory: 'abfss://STORAGE_ACCOUNT_NAME.dfs.core.windows.net/' # 不正確: abfsRootDirectory: 'abfss://STORAGE_ACCOUNT_NAME.blob.core.windows.net'