이 문서에서는 Azure Databricks 서버리스 컴퓨팅을 통해 OneLake에 연결하는 방법을 보여 줍니다.
필수 조건
연결하기 전에 다음이 있는지 확인합니다.
- Fabric 작업 영역 및 레이크하우스
- 프리미엄 Azure Databricks 작업 영역
- 적어도 기여자 작업 영역 역할 할당이 있는 서비스 주체입니다.
- 비밀을 저장하고 검색하기 위해 데이터베이스 비밀 또는 Azure Key Vault(AKV)를 사용하세요. 이 예제에서는 Databricks 비밀을 사용합니다.
Databricks 서버리스 컴퓨팅을 사용하여 OneLake에 연결
Databricks 서버리스 컴퓨팅을 사용하면 클러스터를 프로비전하지 않고도 워크로드를 실행할 수 있습니다. Databricks 서버리스 설명서에 따르면 서버리스 컴퓨팅에서 Spark의 구성을 자동화하기 위해 Databricks 서버리스에서는 지원되는 Spark 속성의 하위 집합만 구성할 수 있습니다.
참고 항목
이 제한은 Azure Databricks에 고유하지 않습니다. AWS(Amazon Web Services) 및 Google Cloud의 Databricks 서버리스 구현은 동일한 동작을 나타냅니다.
Databricks 서버리스 컴퓨팅에 연결된 Notebook에서 지원되지 않는 Spark 구성을 수정하거나 설정하려고 하면 시스템에서 CONFIG_NOT_AVAILABLE 오류를 반환합니다.
OneLake는 Databricks 서버리스 컴퓨팅에서 인바운드 연결을 지원합니다. 적절한 액세스 권한이 있고 Databricks 서버리스 컴퓨팅과 OneLake 사이에 네트워크 경로가 있는 경우 Databricks 서버리스 컴퓨팅에서 OneLake에 연결할 수 있습니다. Databricks 서버리스를 사용하면 코드에서 지원되지 않는 Spark 속성을 수정하지 않는지 확인합니다.
Notebook 작성
Databricks 작업 영역에서 Notebook을 만들고 서버리스 컴퓨팅에 연결합니다.
Python 모듈 가져오기 - 이 샘플에서는 다음 세 가지 모듈을 사용합니다.
- msal 은 MSAL(Microsoft 인증 라이브러리)이며 개발자가 Microsoft ID 플랫폼 인증을 애플리케이션에 통합할 수 있도록 설계되었습니다.
- 요청 모듈은 Python을 사용하여 HTTP 요청을 만드는 데 사용됩니다.
- delta Lake 는 Python을 사용하여 Delta Lake 테이블을 읽고 쓰는 데 사용됩니다.
from msal import ConfidentialClientApplication import requests from deltalake import DeltaTable애플리케이션 ID를 포함하여 Microsoft Entra 테넌트에 대한 변수를 선언합니다. Microsoft Fabric이 배포된 테넌트의 테넌트 ID를 사용합니다.
# Fetch from Databricks secrets. tenant_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for tenant _id>") client_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for client _id>") client_secret = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for secret>")패브릭 작업 영역 변수를 선언합니다.
workspace_id = "<replace with workspace name>" lakehouse_id = "<replace with lakehouse name>" table_to_read = "<name of lakehouse table to read>" storage_account_name = workspace_id onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"토큰을 획득하도록 클라이언트를 초기화합니다.
authority = f"https://login.microsoftonline.com/{tenant_id}" app = ConfidentialClientApplication( client_id, authority=authority, client_credential=client_secret ) result = app.acquire_token_for_client(scopes=["https://onelake.fabric.microsoft.com/.default"]) if "access_token" in result: access_token = result["access_token"] print("Access token acquired.") token_val = result['access_token']OneLake에서 델타 테이블 읽기
dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"}) df = dt.to_pandas() print(df.head())참고 항목
서비스 주체에는 기여자 작업 영역 역할 할당이 있으며 이를 사용하여 OneLake에 데이터를 다시 쓸 수 있습니다.
이전 단계를 완료한 후에는 서버리스 컴퓨팅에 연결된 Notebook Databricks를 사용하여 OneLake에서 데이터를 읽을 수 있습니다.