Azure Data Lake Storage Gen2 및 Blob Storage에 연결하세요.
참고 항목
이 문서에서는 Azure Data Lake Storage Gen2에 대한 액세스를 구성하기 위한 레거시 패턴을 설명합니다. Databricks에서는 Unity 카탈로그를 사용하여 파일과 직접 상호 작용하기 위해 Azure Data Lake Storage Gen2 및 볼륨에 대한 액세스를 구성하는 것이 좋습니다. Unity 카탈로그를 사용하여 클라우드 개체 스토리지 및 서비스에 연결을 참조 하세요.
이 문서에서는 Azure Databricks에서 Azure Data Lake Storage Gen2 및 Blob Storage에 연결하는 방법을 설명합니다.
참고 항목
- 레거시 WASB(Windows Azure Storage Blob 드라이버)는 더 이상 사용되지 않습니다. ABFS는 WASB보다 많은 이점을 제공합니다. ABFS에 대한 Azure 설명서를 참조하세요. 레거시 WASB 드라이버 작업에 대한 설명서는 WASB를 사용하여 Azure Blob Storage에 연결(레거시)을 참조하세요.
- Azure는 Azure Data Lake Storage Gen1의 사용 중지를 발표했습니다. Azure Databricks는 모든 데이터를 Azure Data Lake Storage Gen1에서 Azure Data Lake Storage Gen2로 마이그레이션하는 것을 권장합니다. 아직 마이그레이션하지 않은 경우 Azure Databricks에서 Azure Data Lake Storage Gen1에 액세스를 참조하세요.
Azure 자격 증명을 사용하여 Azure Data Lake Storage Gen2 또는 Blob Storage에 연결
다음 자격 증명을 사용하여 Azure Data Lake Storage Gen2 또는 Blob Storage에 액세스할 수 있습니다.
Microsoft Entra ID 서비스 주체를 사용하는 OAuth 2.0: Databricks는 Microsoft Entra ID 서비스 주체를 사용하여 Azure Data Lake Storage Gen2에 연결하는 것이 좋습니다. Microsoft Entra ID 서비스 주체를 만들고 Azure Storage 계정에 대한 액세스를 제공하려면 서비스 주체 및 Microsoft Entra ID(Azure Active Directory)를 사용하여 스토리지에 액세스를 참조하세요.
Microsoft Entra ID 서비스 주체를 만들려면 Microsoft Entra ID의
Application Administrator
역할 또는Application.ReadWrite.All
권한이 있어야 합니다. 스토리지 계정에서 역할을 할당하려면 스토리지 계정에서 사용자 액세스 관리자 Azure RBAC 역할이 있는 소유자 또는 사용자여야 합니다.Important
Blob Storage는 Microsoft Entra ID 서비스 주체를 지원하지 않습니다.
SAS(공유 액세스 서명): 스토리지 SAS 토큰을 사용하여 Azure Storage에 액세스할 수 있습니다. SAS를 사용하면 세분화된 액세스 제어와 함께 임시 토큰을 사용하여 스토리지 계정에 대한 액세스를 제한할 수 있습니다.
스토리지 계정, 컨테이너 또는 파일에 대해 가지고 있는 SAS 토큰 권한만 직접 부여할 수 있습니다.
계정 키: 스토리지 계정 액세스 키를 사용하여 Azure Storage에 대한 액세스를 관리할 수 있습니다. 스토리지 계정 액세스 키는 스토리지 계정의 구성과 데이터에 대한 모든 권한을 부여하는 데 사용할 수 있습니다. Databricks에서는 계정 키 대신 Microsoft Entra ID 서비스 주체 또는 SAS 토큰을 사용하여 Azure Storage에 연결하는 것이 좋습니다.
계정의 액세스 키를 보려면 스토리지 계정에 소유자, 기여자 또는 스토리지 계정 키 운영자 서비스 역할이 있어야 합니다.
Databricks는 모든 자격 증명을 저장하기 위해 비밀 범위를 사용하는 것을 권장합니다. 작업 영역의 사용자, 서비스 주체, 그룹에 비밀 범위를 읽을 수 있는 액세스 권한을 부여할 수 있습니다. 이렇게 하면 사용자에게 Azure Storage 액세스를 허용하면서 Azure 자격 증명을 보호합니다. 비밀 범위를 만들려면 비밀 범위를 참조하세요.
Azure Storage에 액세스하도록 Azure 자격 증명을 구성하도록 Spark 속성 설정
Azure Storage에 액세스하도록 Azure 자격 증명을 구성하도록 Spark 속성을 설정할 수 있습니다. 자격 증명의 범위를 클러스터 또는 Notebook으로 지정할 수 있습니다. 클러스터 액세스 제어와 Notebook 액세스 제어를 함께 사용하여 Azure Storage에 대한 액세스를 보호합니다. 컴퓨팅 권한 및 Databricks Notebook을 사용하여 공동 작업을 참조하세요.
참고 항목
Microsoft Entra ID 서비스 주체를 사용하여 SQL 웨어하우스에서 Azure Storage에 액세스할 수도 있습니다. 데이터 액세스 구성 지원을 참조하세요.
Spark 속성을 설정하려면 클러스터의 Spark 구성 또는 Notebook에서 다음 코드 조각을 사용합니다.
Azure 서비스 주체
다음 형식을 사용하여 클러스터 Spark 구성을 설정합니다.
spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
다음 예제와 같이 Notebook에서 spark.conf.set
을 사용할 수 있습니다.
service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
Replace
<secret-scope>
을 Databricks 비밀 범위 이름으로 바꿉니다.<service-credential-key>
을 클라이언트 암호가 포함된 키 이름으로 바꿉니다.<storage-account>
를 Azure 스토리지 계정의 이름으로 바꿉니다.<application-id>
를 Microsoft Entra ID 애플리케이션의 애플리케이션(클라이언트) ID로 바꿉니다.<directory-id>
를 Microsoft Entra ID 애플리케이션의 디렉터리(테넌트) ID로 바꿉니다.
SAS 토큰
동일한 Spark 세션에서 여러 스토리지 계정에 대해 SAS 토큰을 구성할 수 있습니다.
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))
Replace
<storage-account>
를 Azure Storage 계정 이름으로 바꿉니다.<scope>
을 Azure Databricks 비밀 범위 이름으로 바꿉니다.<sas-token-key>
을 Azure Storage SAS 토큰이 포함된 키 이름으로 바꿉니다.
계정 키
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Replace
<storage-account>
를 Azure Storage 계정 이름으로 바꿉니다.<scope>
을 Azure Databricks 비밀 범위 이름으로 바꿉니다.<storage-account-access-key>
을 Azure Storage 계정 액세스 키가 포함된 키 이름으로 바꿉니다.
Azure Storage 액세스
Azure Storage 컨테이너에 액세스하도록 자격 증명을 올바르게 구성한 후에 URI를 사용하여 스토리지 계정의 리소스와 상호 작용할 수 있습니다. Databricks는 보안을 강화하기 위해 abfss
드라이버 사용을 권장합니다.
spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;
COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');
예제 Notebook
Microsoft Entra ID(이전의 Azure Active Directory) 서비스 주체 Notebook을 사용하는 ADLS Gen2 OAuth 2.0
Azure Data Lake Storage Gen2의 알려진 문제
Azure Portal을 통해 만든 스토리지 컨테이너에 액세스하려고 하면 다음 오류가 발생할 수 있습니다.
StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.
계층 구조 네임스페이스를 사용하도록 설정하면 Azure Portal을 통해 컨테이너를 만들 필요가 없습니다. 이 문제가 표시되면 Azure Portal을 통해 Blob 컨테이너를 삭제합니다. 몇 분 후에 컨테이너에 액세스할 수 있습니다. 또는 이 컨테이너가 Azure Portal을 통해 만들어지지 않는 한 다른 컨테이너를 사용하도록 abfss
URI를 변경할 수 있습니다.
Microsoft 설명서에서 Azure Data Lake Storage Gen2의 알려진 문제를 참조하세요.
Azure Databricks에서 데이터를 저장하고 액세스하기 위한 사용되지 않는 패턴
다음은 사용되지 않는 스토리지 패턴입니다.
Databricks에서는 더 이상 외부 데이터 위치를 Databricks 파일 시스템에 마운트하지 않는 것이 좋습니다. Azure Databricks에서 클라우드 개체 스토리지 탑재를 참조하세요.
Databricks는 더 이상 Azure Data Lake Storage Gen2에서 자격 증명 통과 사용을 권장하지 않습니다. Microsoft Entra ID 자격 증명 통과를 사용하여 Azure Data Lake Storage에 액세스(레거시)를 참조합니다.