다음을 통해 공유


Oracle에서 페더레이션 쿼리 실행

중요하다

이 기능은 공개 프리뷰.

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

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

  • Oracle 데이터베이스에 대한 연결.
  • Unity 카탈로그 쿼리 구문과 데이터 거버넌스 도구를 사용하여 Azure Databricks 사용자 액세스를 관리할 수 있도록 Unity 카탈로그 내에서 Oracle 데이터베이스를 반영하는 외부 카탈로그.

시작하기 전에

시작하기 전에 이 섹션의 요구 사항을 충족하는지 확인합니다.

Databricks 요구 사항

작업 영역 요구 사항:

  • Unity 카탈로그에 사용할 수 있는 작업 영역입니다.

컴퓨팅 요구 사항:

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

필요한 권한:

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

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

Oracle 요구 사항

  • 서버 쪽 암호화를 사용하도록 설정했습니다.

Azure Databricks 연결 만들기

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

메모

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

필요한 권한: Metastore의 관리자 또는 CREATE CONNECTION 권한이 있는 사용자.

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 카탈로그 아이콘카탈로그를 클릭합니다.
  2. 왼쪽 창에서 외부 데이터 메뉴를 확장하고 연결을 선택합니다.
  3. 연결 만들기클릭합니다.
  4. 사용자에게 친숙한 연결 이름입력합니다.
  5. 연결 유형Oracle에서 선택합니다.
  6. Oracle 인스턴스에 대해 다음 연결 속성을 입력합니다.
    • 호스트: 예를 들어 oracle-demo.123456.rds.amazonaws.com
    • 포트: 예를 들어 1521
    • 사용자: 예를 들어 oracle_user
    • 암호: 예를 들어 password123
  7. (선택 사항) 메모를 추가합니다.
  8. 클릭합니다만들기.

SQL

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

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

Databricks는 자격 증명과 같은 중요한 값에 일반 텍스트 문자열 대신 Azure Databricks 비밀 사용하는 것이 좋습니다. 예를 들어:

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

Notebook SQL 명령에서 일반 텍스트 문자열을 사용해야 하는 경우에는 $와 같은 특수 문자를 \로 이스케이프하여 문자열이 잘리는 것을 방지하십시오. 예: \$.

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

외국 카탈로그 만들기

외부 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 Azure Databricks 및 Unity 카탈로그를 사용하여 해당 데이터베이스의 데이터에 대한 액세스를 쿼리하고 관리할 수 있습니다. 외국 카탈로그를 만들려면 이미 정의된 데이터 원본에 대한 연결을 사용합니다.

외국 카탈로그를 만들려면 Azure Databricks Notebook 또는 SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE FOREIGN CATALOG SQL 명령을 사용할 수 있습니다.

메모

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

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

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 카탈로그 아이콘을 클릭하고카탈로그를 열어 카탈로그 탐색기를 엽니다.

  2. 카탈로그 창 위쪽에서 추가 또는 플러스 아이콘 추가 아이콘을 클릭하고 메뉴에서 카탈로그 추가를 선택합니다.

    또는 빠른 액세스 페이지에서 카탈로그 단추를 클릭한 다음 카탈로그 만들기 단추를 클릭합니다.

  3. 외국 카탈로그를 만들기 위한 지침은 카탈로그 만들기을 따르십시오.

SQL

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

  • <catalog-name>: Azure Databricks에서 카탈로그의 이름입니다.
  • <connection-name>: 데이터 원본, 경로 및 액세스 자격 증명을 지정하는 연결 개체.
  • <service-name>: Azure Databricks에서 카탈로그로 미러링하려는 서비스 이름입니다.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');

지원되는 푸시다운

지원되는 푸시다운 기능은 다음과 같습니다.

  • 필터
  • 예측
  • 한계
  • 집계
  • 오프셋
  • 캐스트
  • 포함, 으로 시작, 으로 끝남

데이터 형식 매핑

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

Oracle 유형 Spark 유형
표준 시간대가 있는 타임스탬프, 현지 표준 시간대가 있는 타임스탬프 타임스탬프 유형
날짜, 타임스탬프 TimestampType/TimestampNTZType*
NUMBER(숫자), FLOAT(부동 소수점) 십진 유형
이진 부동소수점 플로트 타입
바이너리 더블 DoubleType
CHAR, NCHAR, VARCHAR2, NVARCHAR2 StringType (문자열 유형)
  • DATE 및 TIMESTAMP는 spark.sql.timestampType = TIMESTAMP_LTZ 경우 Spark TimestampType에 매핑됩니다(기본값). spark.sql.timestampType = TIMESTAMP_NTZ경우 TimestampNTZType에 매핑됩니다.