다음을 통해 공유


Microsoft SQL Server에서 페더레이션 쿼리 실행

이 문서에서는 Lakehouse Federation을 set Azure Databricks에서 관리되지 않는 SQL Server 데이터에 대해 페더레이션된 쿼리를 실행하는 방법을 설명합니다. Lakehouse Federation에 대한 자세한 내용은 Lakehouse Federation이란?을 참조하세요.

Lakehouse Federation을 사용하여 SQL Server 데이터베이스에 연결하려면 Azure Databricks Unity Catalog 메타스토어에서 다음을 만들어야 합니다.

  • SQL Server 데이터베이스에 대한 연결입니다.
  • Unity Catalog SQL Server 데이터베이스를 반영하는 외부 요소 catalog를 사용하여, Unity Catalog 쿼리 구문과 데이터 거버넌스 도구를 통해 데이터베이스에 대한 Azure Databricks 사용자 액세스를 관리할 수 있습니다.

Lakehouse Federation은 SQL Server, Azure SQL Database 및 Azure SQL Managed Instance를 지원합니다.

시작하기 전에

작업 영역 요구 사항

  • Unity Catalog작업 영역이 활성화되었습니다.

컴퓨팅 요구 사항:

  • 컴퓨팅 리소스에서 대상 데이터베이스 시스템으로의 네트워크 연결 Lakehouse Federation에 대한 네트워킹 권장 사항을 참조하세요.
  • Azure Databricks의 컴퓨트는 Databricks Runtime 13.3 LTS 이상을 사용해야 하며 공유 또는 단일 사용자 액세스 모드를 사용해야 합니다.
  • SQL 웨어하우스는 프로 또는 서버리스여야 하며 2023.40 이상을 사용해야 합니다.

권한 필요:

  • 연결을 만들려면 메타스토어 관리자이거나 작업 영역에 연결된 Unity Catalog 메타스토어에 대한 CREATE CONNECTION 권한이 있는 사용자여야 합니다.
  • 외부 catalog를 만들려면 메타스토어에 대한 CREATE CATALOG 권한이 있어야 하며, 연결의 소유자이거나 연결에 대한 CREATE FOREIGN CATALOG 권한이 있어야 합니다.

추가 권한 요구 사항은 다음 각 태스크 기반 섹션에 지정됩니다.

  • OAuth를 사용하여 인증하려는 경우 Azure Databricks용 Microsoft Entra ID에 앱을 등록합니다. 자세한 내용은 다음 섹션을 참조하세요.

(선택 사항) Azure Databricks에 대한 Microsoft Entra ID에 앱 등록

OAuth를 사용하여 인증하려면 SQL Server 연결을 만들기 전에 이 단계를 수행합니다. 대신 사용자 이름과 암호를 사용하여 인증하려면 이 섹션을 건너뜁니다.

  1. Azure Portal에 로그인합니다.
  2. 왼쪽 탐색 창에서 Microsoft Entra ID를 클릭합니다.
  3. 앱 등록을 클릭합니다.
  4. 새 등록을 클릭합니다. 새 앱의 이름을 입력하고 리디렉션 URI를 set에서 https://<workspace-url>/login/oauth/azure.html로 설정합니다.
  5. 등록을 클릭합니다.
  6. Essentials 상자에서 애플리케이션(클라이언트) ID복사하고 저장합니다. 이 값을 사용하여 애플리케이션을 구성합니다.
  7. 인증서 및 비밀을 클릭합니다.
  8. 클라이언트 암호 탭에서 새 클라이언트 암호를 클릭합니다.
  9. 비밀 및 만료에 대한 설명을 입력합니다(기본 설정은 180일).
  10. 추가를 클릭합니다.
  11. 클라이언트 암호에 대해 생성된 값을 복사합니다.
  12. API 권한을 클릭합니다.
  13. 권한 추가를 클릭합니다.
  14. Azure SQL Database 위임된 권한아래의 user_impersonation 클릭합니다.
  15. 권한 추가를 클릭합니다.

연결 만들기

연결은 외부 데이터베이스 시스템에 액세스하기 위한 경로 및 credentials 지정합니다. 연결을 만들려면 Azure Databricks Notebook 또는 Databricks SQL 쿼리 편집기에서 Catalog Explorer 또는 CREATE CONNECTION SQL 명령을 사용할 수 있습니다.

참고 항목

Databricks REST API 또는 Databricks CLI를 사용하여 연결을 만들 수도 있습니다. POST /api/2.1/unity-catalog/connectionsUnity Catalog 명령을 확인하세요.

필요한 권한: 메타스토어 관리자 또는 CREATE CONNECTION 권한이 있는 사용자.

Catalog 탐색기

  1. Azure Databricks 작업 영역에서 Catalog 아이콘Catalog클릭합니다.

  2. Catalog 창 맨 위에서 추가 또는 더하기 아이콘 추가 아이콘을 클릭한 후, 메뉴에서 연결을 추가 select 합니다.

    또는 빠른 액세스 페이지에서 외부 데이터 단추를 클릭하고 Connections 탭으로 이동한 다음 연결 생성을 클릭합니다.

  3. 사용자에게 친숙한 연결 이름을 입력합니다.

  4. Select 연결 유형SQL Server.

  5. Select 인증 유형OAuth 또는 사용자 이름 및 암호.

  6. 인증 방법에 따라 SQL Server 인스턴스에 대해 다음 연결 속성을 입력합니다.

    • 호스트: SQL 서버.
    • (기본 인증) 항구
    • (기본 인증) trustServerCertificate: 기본값은 .입니다 false. set에서 true까지의 경우, 전송 계층은 SSL을 사용하여 채널을 암호화하고 인증서 체인을 통과하여 신뢰성을 검증합니다. 특정한 필요로 인해 신뢰 검증을 우회할 필요가 없는 한 이 set를 기본값으로 둡니다.
    • (기본 인증) 사용자
    • (기본 인증) 암호
    • (OAuth) 권한 부여 엔드포인트: 형식의 https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorizeAzure Entra 권한 부여 엔드포인트입니다.
    • (OAuth) 만든 앱의 클라이언트 ID 입니다.
    • (OAuth) 만든 클라이언트 암호 의 클라이언트 암호입니다.
    • (OAuth) 클라이언트 범위: 수정 없이 다음 값을 입력합니다. https://database.windows.net/.default offline_access
    • (OAuth) Azure Entra ID를 사용하여 로그인하라는 메시지가 표시됩니다. Azure 사용자 이름 및 암호를 입력합니다. 연결 만들기 페이지로 리디렉션되면 권한 부여 코드가 UI에 채워집니다.
  7. (선택 사항) Select을(를) 애플리케이션 의도 드롭다운 메뉴의 옵션으로 선택하십시오 (기본값: Read write).

  8. (선택 사항) 연결 테스트를 클릭하여 작동하는지 확인합니다.

  9. (선택 사항) 주석을 입력합니다.

  10. 만들기를 클릭합니다.

참고 항목

(OAuth) Azure Databricks 컨트롤 플레인 IP에서 Azure Entra ID OAuth 엔드포인트에 액세스할 수 있어야 합니다. Azure Databricks 지역을 참조하세요.

SQL

Notebook 또는 Databricks SQL 쿼리 편집기에서 다음 명령을 실행합니다.

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

credentials같은 중요한 values 일반 텍스트 문자열 대신 Azure Databricks 비밀 사용하는 것이 좋습니다. 예시:

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

비밀 설정에 대한 자세한 내용은 비밀 관리를 참조하세요.

외국의 catalog 만들기

외부 catalog는 데이터베이스의 데이터를 Azure Databricks 및 Unity Catalog을 사용하여 쿼리하고 관리할 수 있도록 외부 데이터 시스템에 있는 데이터베이스를 미러링합니다. 외부 catalog을 생성하려면 이미 정의된 데이터 원본에 대한 연결을 사용해야 합니다.

외부 catalog를 생성하려면 Azure Databricks 노트북 또는 SQL 쿼리 편집기에서 Catalog Explorer 또는 CREATE FOREIGN CATALOG SQL 명령을 사용할 수 있습니다.

참고 항목

Databricks REST API 또는 Databricks CLI를 사용하여 catalog만들 수도 있습니다. POST /api/2.1/unity-catalog/catalogsUnity Catalog 명령을 참조하세요.

필요한 권한: 메타스토어에 대한 CREATE CATALOG 권한과 연결에 대한 소유권 또는 연결에 대한 CREATE FOREIGN CATALOG 권한이 필요합니다.

Catalog 탐색기

  1. Azure Databricks 작업 영역에서 Catalog 아이콘Catalog 클릭하여 Catalog 탐색기를 엽니다.

  2. 창 위쪽에서 추가 또는 더하기 아이콘 추가 아이콘을 클릭하고 메뉴에서 추가 .

    또는 빠른 액세스 페이지에서 Catalogs 버튼을 클릭한 다음, 생성 catalog 버튼을 클릭합니다.

  3. 에서 catalogs외국 catalogs를 만드는 지침을 따르십시오.

SQL

Notebook 또는 SQL 쿼리 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다. 자리 표시자 values을 바꾸다.

  • <catalog-name>: Azure Databricks의 catalog 이름입니다.
  • <connection-name>: 데이터 원본, 경로 및 액세스 credentials지정하는 연결 개체.
  • <database-name>: Azure Databricks에서 catalog로 미러링하려고 하는 데이터베이스의 이름입니다.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

지원되는 푸시다운

다음 푸시다운은 모든 컴퓨팅에서 지원됩니다.

  • 필터
  • 프로젝션
  • Limit
  • 함수: 부분, 필터 식에만 해당합니다. (문자열 함수, 수학 함수, 데이터, 시간, 타임스탬프 함수 및 별칭, 캐스트, SortOrder와 같은 기타 함수)

Databricks Runtime 13.3 LTS 이상 및 SQL 웨어하우스 컴퓨팅에서 다음 푸시다운이 지원됩니다.

  • 집계
  • 다음 부울 연산자: =, <, <=, >, >=, <=>
  • 다음 수학 함수(ANSI가 비활성화된 경우 지원되지 않음): +, -, *, %, /
  • 기타 연산자: ^, |, ~
  • limit을 함께 사용할 때 정렬

다음 푸시다운은 지원되지 않습니다.

  • 조인
  • Windows 함수

데이터 형식 매핑

SQL Server에서 Spark로 읽을 때 데이터 형식은 다음과 같이 매핑됩니다.

SQL Server 형식 Spark 형식
bigint (unsigned), decimal, money, numeric, smallmoney 데시말타입
smallint, tinyint 쇼트타입
int 인터저타입
bigint(서명된 경우) 롱타입
real 플롯타입
float 더블타입
char, nchar, uniqueidentifier CharType
nvarchar, varchar VarcharType
text, xml StringType
binary, geography, geometry, image, timestamp, udt, varbinary BinaryType
bit BooleanType
date DateType
datetime, datetime, smalldatetime, time TimestampType/TimestampNTZType

*SQL Server에서 읽을 때 SQL Server datetimes 는 Spark TimestampTypepreferTimestampNTZ = false 에 매핑됩니다(기본값). SQL Server datetimes 는 ifTimestampNTZTypepreferTimestampNTZ = true 매핑됩니다.