Azure Synapse Analytics の Apache Spark プールのストレージ アクセスに関する問題を解決する
適用対象:Azure Synapse Analytics
Apache Spark は、ビッグ データ分析アプリケーションのパフォーマンスを向上させるためのメモリ内処理をサポートする並列処理フレームワークです。 Azure Synapse Analytics の Apache Spark は、クラウドでの Apache Spark の Microsoft 実装の 1 つです。 Azure Synapse では、サーバーレス Apache Spark プールを Azure に簡単に作成して構成することができます。 Azure Synapse の Spark プールは、Azure Storage および Azure Data Lake Generation 2 ストレージと互換性があります。 そのため、Spark プールを使用して、Azure の格納データを処理することができます。
"403" エラーや Synapse ワークスペースがリンクされたサービスを見つけられないなど、プール 記憶域のアクセスに関する問題が発生している場合は、提供されているガイダンスを使用して問題を解決してください。
サポートされていないシナリオ
Synapse Spark プールからストレージ アカウントに接続する場合、次のユース ケースはサポートされません。
- ADLS Gen 1 ストレージ アカウントへの接続
- ユーザー割り当てマネージド ID を使用した ADLS Gen 2 ストレージ アカウントへの接続
- 以下を備える ADLS Gen 2 ストレージ アカウントへの接続:
- 共有 VNET Synapse ワークスペース
- ファイアウォールが有効なストレージ アカウント
一般的な問題と解決方法
エラー | ソリューション |
---|---|
"errorMessage":"LSRServiceException is [{"StatusCode":400,"ErrorResponse":{"code":"LSRLinkedServiceFailure","message":"Could not find Linked Service AzureDataLakeStorage1; | このエラーは、Synapse ワークスペースが Git リポジトリ、Azure DevOps Services、または GitHub に関連付けられている場合に生成されます。 ノートブックやリンクされたサービスなどの成果物が発行されていない場合にも生成されます。 コラボレーション ブランチの code の変更 を Synapse サービスに手動で発行します。 |
stdout: スレッド "main" org.apache.hadoop.fs.FileAlreadyExistsException での例外: 操作失敗: "このエンドポイントでは BlobStorageEvents または SoftDelete はサポートされていません。 このエンドポイントを使用する場合は、これらのアカウント機能を無効にします。"、409、HEAD、https://<storageaccountname>.dfs.core.windows.net/scripts/?upn=false&action=getAccessControl&timeout=90 | ADLS Gen 2 ストレージが primary ストレージとして構成されていることを確認。 SoftDeleteを無効にするには、ストレージ アカウントの [有効な BLOB の論理的な削除] チェック ボックスをオフにします。 |
'403' に関する問題のトラブルシューティング
ストレージ アクセスとアクセスしているアカウント
- パイプラインを介してストレージに書き込むには、Synapse ワークスペース MSI は、ストレージで読み取り、書き込み、削除などの操作を実行するセキュリティ プリンシパルです。
- ワークスペース MSI アカウントに、すべてのアクションを実行するためのストレージ BLOB データ共同作成者ロールがあることを確認します。
- Azure Notebooks を使用してストレージ アカウントにアクセスする場合は、リンクされたサービスを介してストレージにアクセスしない限り、ログイン アカウントを使用します。
- ログインしているユーザー アカウントには、フル アクセスとアクセス許可を持つストレージ BLOB データ共同作成者ロールが必要です。
- ストレージに接続するには、リンクされたサービスとサービス プリンシパル認証を使用します。 次に、Azure Active に登録されているアプリケーションに、Azure ストレージに "ストレージ BLOB データ共同作成者" を割り当てる必要があります。
ストレージでのロールベースのアクセス制御 (RBAC) の実装では、詳細はコンテナ レベルで制御されます。 詳細については、「Azure Data Lake Storage Gen2 のアクセス制御モデル」を参照してください。
Azure ロールベースのアクセス制御
Azure ロールベースのアクセス制御では、ロールの割り当てを使用して、Synapse ワークスペース MSI、ログイン ユーザー、Microsoft Entra ID のアプリケーション レジスタなどのセキュリティ プリンシパルにアクセス許可のセットを適用します。 所有者、共同作成者、閲覧者、ストレージ アカウント共同作成者などのロールを使用すると、セキュリティ プリンシパルでストレージ アカウントを管理できます。
アクセス制御リスト
アクセス制御リスト (ACL) を使用して、ディレクトリとファイルに詳細なレベルのアクセスを適用します。
- セキュリティ プリンシパルに対してストレージ BLOB データ閲覧者やストレージ BLOB データ共同作成者などのデータ アクセス ロールが見つかった場合は、ロールに書き込み、読み取り、削除などのアクションを実行するアクセス許可があるかどうかを確認するチェックが実行されます。 その場合、セキュリティ プリンシパルは、コンテナー ロールに基づいて、すべてのファイルとフォルダーにアクセスする可能性があります。
- ファイルまたはフォルダーに対する追加の ACL チェックはありません。
- ストレージ コンテナー レベルでセキュリティ プリンシパルのデータ アクセス ロールが見つからない場合、ACL チェックはファイルとフォルダーで実行されます。