다음을 통해 공유


PostgreSQL에서 페더레이션된 쿼리 실행

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

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

  • PostgreSQL 데이터베이스에서 실행 쿼리에 대한 연결입니다.
  • Unity catalog PostgreSQL 데이터베이스에서 실행 쿼리를 미러링하는 Unity Catalog 쿼리 구문 및 데이터 거버넌스 도구를 사용하여 데이터베이스에 대한 Azure Databricks 사용자 액세스를 관리할 수 있습니다.

시작하기 전에

작업 영역 요구 사항

  • Unity Catalog를 위해 활성화된 작업 공간입니다.

컴퓨팅 요구 사항:

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

권한 필요:

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

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

연결 만들기

연결은 외부 데이터베이스 시스템에 액세스하기 위한 경로 및 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. 창 맨 위에서 추가 또는 더하기 아이콘 추가 아이콘을 클릭하고 메뉴에서 연결 추가합니다.

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

  3. 마법사의 Set 페이지에서 연결 이름을 사용자에게 친숙한 방식으로 입력하세요.

  4. Select의 연결 형식.

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

  6. 다음클릭합니다.

  7. 인증 페이지에서 PostgreSQL 인스턴스에 대해 다음 연결 속성을 입력합니다.

    • 호스트: 예를 들면 다음과 같습니다. postgres-demo.lb123.us-west-2.rds.amazonaws.com
    • 포트: 예를 들면 다음과 같습니다. 5432
    • 사용자: 예를 들면 다음과 같습니다. postgres_user
    • 암호: 예를 들면 다음과 같습니다.password123
  8. 연결 생성클릭합니다.

  9. Catalog 기본 페이지에서 외국 catalog의 이름을 입력합니다. 외부 catalog 데이터베이스는 외부 데이터 시스템에 위치하고 있으며, Azure Databricks 및 Unity Catalog을 사용하여 해당 데이터베이스의 데이터에 대한 쿼리 및 액세스를 관리할 수 있도록 미러링됩니다.

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

  11. 만들기 catalog클릭합니다.

  12. Access 페이지에서 사용자는 당신이 만든 select에 액세스할 수 있는 작업 공간을 catalog. 모든 작업 영역에 액세스 권한이을(를) 할 수 있습니다. 또는 작업 영역에할당을 클릭하고, 작업 영역을 한 다음 할당을 클릭합니다.

  13. 소유자을(를) 변경하여 catalog의 모든 개체에 대한 액세스를 관리할 수 있습니다. 텍스트 상자에 주체를 입력한 다음 검색 결과에서 주체를 클릭합니다.

  14. Grant 의 권한가 catalog에서 있습니다. Grant클릭합니다.

    1. 개체에 액세스할 수 있는 catalog 지정합니다. 텍스트 상자에 주체를 입력한 다음 검색 결과에서 주체를 클릭합니다.
    2. 보안 주체 각각에 대해 Select로 미리 설정합니다. 모든 계정 사용자에게는 기본적으로 BROWSE 부여됩니다.
      • 드롭다운 메뉴에서 Select데이터 판독기를 선택하여 grant개체의 권한을 readcatalog로 설정합니다.
      • Select 데이터 편집기 드롭다운 메뉴에서 grant개체에 대한 권한을 readmodifycatalog.
      • select권한을 수동으로 grant.
    3. Grant클릭하세요.
  15. 다음클릭합니다.

  16. 메타데이터 페이지에서 태그 키-값 쌍을 지정합니다. 자세한 내용은 Unity Catalog 보안 가능한 객체에 태그 적용를 참조하세요.

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

  18. 저장을 클릭합니다.

SQL

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

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

Azure Databricks 시크릿를 사용하여 values과 같은 주요 credentials를 일반 텍스트 문자열 대신 사용하는 것이 좋습니다. 예시:

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

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

외국의 catalog 만들기

참고 항목

UI를 사용하여 데이터 원본에 대한 연결을 만드는 경우 외장 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 웨어하우스에서 지원되는 푸시다운은 다음과 같습니다.

  • 다음 집계 함수: MIN, MAX, COUNT, SUM, AVG, VAR_POP, VAR_SAMP, STDDEV_POP, STDDEV_SAMP, GREATEST, least, COVAR_POP, COVAR_SAMP, CORR, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXY
  • 다음 부울 함수: =, , <, <=>, >=, <=>
  • 다음 수학 함수(ANSI가 비활성화된 경우 지원되지 않음): +, -, *, %, /
  • 기타 연산자 | 그리고~
  • 정렬 기능을 limit와 함께 사용할 때

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

  • 조인
  • Windows 함수

데이터 형식 매핑

PostgreSQL에서 Spark로 읽는 경우 데이터 형식은 다음과 같이 매핑됩니다.

PostgreSQL 형식 Spark 형식
numeric 데시말타입
int2 쇼트타입
int4(서명되지 않은 경우) 인터저타입
int8, oid, xid, int4(서명된 경우) 롱타입
float4 플롯타입
배정밀도, float8 더블타입
char CharType
name, varchar, tid VarcharType
bpchar, character varying, json, money, point, super, text StringType
bytea, geometry, varbyte BinaryType
bit, bool BooleanType
date DateType
tabstime, time, time with time with time zone, timetz, time without time zone, timestamp with timetamp with timetamp, timestamp, timestamptz, timestamp without time zone* TimestampType/TimestampNTZType
Postgresql 배열 형식** ArrayType

*Postgresql에서 읽으면 Postgresql Timestamp 이 Spark TimestampTypepreferTimestampNTZ = false 에 매핑됩니다(기본값). Postgresql Timestamp 은 ifTimestampNTZTypepreferTimestampNTZ = true 매핑됩니다.

**제한된 배열 형식이 지원됩니다.