Azure Synapse Analytics Apache Spark プールのストレージ アクセスに関する問題を解決する

適用対象: Azure Synapse Analytics

Apache Spark は、ビッグ データ分析アプリケーションのパフォーマンスを向上させるためにメモリ内処理をサポートする並列処理フレームワークです。 Azure Synapse Analytics の Apache Spark は、クラウドでの Apache Spark の Microsoft 実装の 1 つです。 Azure Synapseを使用すると、Azure でサーバーレス Apache Spark プールを簡単に作成および構成できます。 Azure Synapseの Spark プールは、Azure Storage と Azure Data Lake Generation 2 Storage と互換性があります。 そのため、Spark プールを使用して、Azure に格納されているデータを処理できます。

"403" エラーや Synapse ワークスペースの失敗など、プール ストレージアクセスの問題が発生してリンクされたサービスが見つからない場合は、提供されているガイダンスを使用して問題を解決してください。

対象外のシナリオ

Synapse Spark プールからストレージ アカウントに接続する場合、次のユース ケースはサポートされません。

  • ADLS Gen 1 ストレージ アカウントへの接続
  • ユーザー割り当てマネージド ID を使用した ADLS Gen 2 ストレージ アカウントへの接続
  • ADLS Gen 2 Storage アカウントへの接続には、次のことが含まれます。
    • 共有 VNET Synapse ワークスペース
    • ファイアウォールが有効なストレージ アカウント

共通の問題と解決策

Error ソリューション
"errorMessage":"LSRServiceException is [{"StatusCode":400,"ErrorResponse":{"code":"LSRLinkedServiceFailure","message":"Could not find Linked Service AzureDataLakeStorage1; このエラーは、Synapse ワークスペースが Git リポジトリ、Azure DevOps Services、または GitHub に関連付けられている場合に生成されます。 また、ノートブックやリンクされたサービスなどの成果物が発行されていない場合にも生成されます。

コラボレーション ブランチで コードの変更 を Synapse サービスに手動で発行します。
stdout: スレッド "メイン" 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 ストレージが プライマリ ストレージとして構成されていることを確認します。

SoftDelete を無効にするには、ストレージ アカウントの [BLOB 論理的な削除を有効にする] チェック ボックスをオフにします。

'403' の問題のトラブルシューティング

ストレージ アクセスとアカウントアクセス

  • パイプラインを介してストレージに書き込むには、Synapse Workspace MSI は、ストレージで読み取り、書き込み、削除などの操作を実行するセキュリティ プリンシパルです。
    • ワークスペース MSI アカウントに、すべてのアクションを実行するためのストレージ BLOB データ共同作成者ロールがあることを確認します。
  • Azure Notebooks を使用してストレージ アカウントにアクセスする場合は、リンクされたサービスを介してストレージにアクセスしない限り、ログインしたアカウントを使用します。
    • ログインしているユーザー アカウントには、フル アクセスとアクセス許可を持つストレージ BLOB データ共同作成者ロールが必要です。
  • ストレージに接続するには、リンクされたサービスとサービス プリンシパル認証を使用します。 次に、Azure Active に登録されているアプリケーションに、Azure ストレージに "ストレージ BLOB データ共同作成者" を割り当てる必要があります。

ストレージでのロールベースのアクセス制御 (RBAC) 実装の場合、詳細はコンテナー レベルで制御されます。 詳細については、「Azure Data Lake Storage Gen2のアクセス制御モデル」を参照してください。

Azure ロールベースのアクセス制御

Azure ロールベースのアクセス制御では、ロールの割り当てを使用して、Microsoft Entra IDの Synapse ワークスペース MSI、ログイン ユーザー、アプリケーション レジスタなどのセキュリティ プリンシパルにアクセス許可のセットを適用します。 所有者、共同作成者、閲覧者、ストレージ アカウント共同作成者などのロールを使用すると、セキュリティ プリンシパルでストレージ アカウントを管理できます。

アクセス制御リスト

アクセス制御リスト (ACL) を使用して、ディレクトリとファイルに詳細なレベルのアクセスを適用します。

  • ストレージ BLOB データ閲覧者やストレージ BLOB データ共同作成者などのデータ アクセス ロールがセキュリティ プリンシパルに対して見つかった場合は、チェックが実行され、ロールに書き込み、読み取り、削除などのアクションを実行するアクセス許可があるかどうかを確認します。 その場合、セキュリティ プリンシパルは、コンテナー ロールに基づいて、すべてのファイルとフォルダーにアクセスする可能性があります。
    • ファイルまたはフォルダーに対する追加の ACL チェックはありません。
  • ストレージ コンテナー レベルでセキュリティ プリンシパルのデータ アクセス ロールが見つからない場合、ACL チェックはファイルとフォルダーで実行されます。

リソース