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

이 페이지에서는 Azure Databricks 관리되지 않는 Teradata 데이터에 대해 페더레이션된 쿼리를 실행하도록 Lakehouse Federation을 설정하는 방법을 설명합니다. Lakehouse 페더레이션에 대한 자세한 내용은 외부 데이터베이스 및 카탈로그에 대한 연결을 참조하세요.

Lakehouse Federation을 사용하여 Teradata 데이터베이스에 연결하려면 Azure Databricks Unity 카탈로그 메타스토어에서 다음을 만들어야 합니다(2023년 11월 9일 이후에 만든 작업 영역에는 이미 Unity 카탈로그 메타스토어가 자동으로 프로비전되어 있음).

  • Teradata 데이터베이스에 대한 연결.
  • Unity 카탈로그에서 Teradata 데이터베이스를 미러링하여 Unity 카탈로그 쿼리 구문과 데이터 거버넌스 도구를 사용함으로써 Azure Databricks 사용자의 데이터베이스 접근을 관리할 수 있는 foreign 카탈로그.

시작하기 전에

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

Databricks 요구 사항

작업 공간 요구 사항:

  • Unity 카탈로그에 사용할 수 있는 작업 영역입니다. 2023년 11월 9일 이후에 만든 작업 영역은 자동 메타스토어 프로비저닝을 포함하여 Unity 카탈로그에 자동으로 사용하도록 설정됩니다. 작업 영역이 자동 활성화를 앞지르고 Unity 카탈로그에 대해 사용하도록 설정되지 않은 경우 메타스토어를 수동으로 만들 필요가 없습니다. Unity 카탈로그 시작을 참조하세요.

컴퓨팅 요구 사항:

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

필요한 권한:

  • 연결을 만들려면 메타스토어 관리자이거나 작업 영역에 연결된 Unity 카탈로그 메타스토어에 대한 CREATE CONNECTION 권한이 있는 사용자여야 합니다. Unity 카탈로그가 자동으로 사용 설정된 작업 공간에서는 작업 공간 관리자가 기본적으로 CREATE CONNECTION 권한을 부여받습니다.
  • 외세 카탈로그를 만들려면 메타스토어에 대한 CREATE CATALOG 권한이 있어야 하며 연결 소유자이거나 연결에 대한 CREATE FOREIGN CATALOG 권한이 있어야 합니다. Unity 카탈로그가 자동으로 사용 설정된 작업 공간에서는 작업 공간 관리자가 기본적으로 CREATE CATALOG 권한을 부여받습니다.

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

Teradata 인증

Azure Databricks Lakehouse Federation의 Teradata 연결은 TD2 인증 메커니즘(기본 Teradata 인증)만 지원합니다. TD2는 Teradata 데이터베이스에서 관리하는 사용자 이름 및 암호를 사용하여 사용자를 인증합니다.

LDAP, Kerberos 및 TDNEGO와 같은 다른 Teradata 인증 메커니즘은 지원되지 않습니다.

Teradata TLS

  • SSL에 대한 , require, preferverify-ca, verify-full 모드 중disable에서 선택할 수 있습니다. 이 모드는 prefer 서버에 의존하여 암호화를 사용하도록 설정합니다(포트 번호를 구성할 수 있습니다). TLS를 사용하는 경우 모든 옵션(포트는 443)verify-ca 으로 충분하며 verify-full 연결의 보안을 강화하지만 서버 쪽에서 더 많은 설정이 필요합니다. Databricks는 SSL을 수락하는 것이 좋습니다. 서버에서 SSL을 허용하지 않는 경우 disable 모드를 사용하십시오. SSL이 지원되지 않는 상황에서 require 모드를 사용하려고 하면 성능 저하가 발생할 수 있습니다. 자세한 내용은 Teradata 설명서에서 TLS 사용하여 연결을 보호하는 방법 참조하세요.

Azure Databricks 연결 만들기

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

Note

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

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

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 데이타 icon.Catalog 클릭합니다.
  2. 카탈로그 창 위쪽에서 추가 또는 더하기 아이콘 추가 아이콘을 클릭하고 메뉴에서 연결 만들기를 선택합니다.
  3. 연결 설정 마법사의 연결 기본 페이지에서 사용자에게 친숙한 연결 이름입력합니다.
  4. Teradata 연결 유형을 선택합니다.
  5. (선택 사항) 메모를 추가합니다.
  6. 다음을 클릭합니다.
  7. 인증 페이지에서 Teradata 인스턴스에 대해 다음 연결 속성을 입력합니다.
    • 호스트: 예를 들어 teradata-demo.teradata.com
    • 포트: 예를 들어 1025
    • 사용자: 예를 들어, teradata_user
    • 암호: 예를 들어 password123
    • Ssl 모드: require, prefer, verify-ca, verify-fulldisable
  8. 연결을 만들려면 을(를) 클릭하십시오.
  9. 카탈로그 기본 페이지에서 외세 카탈로그의 이름을 입력합니다. 외신 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 Azure Databricks 및 Unity 카탈로그를 사용하여 해당 데이터베이스의 데이터에 대한 액세스를 쿼리하고 관리할 수 있습니다.
  10. (선택 사항) 연결 테스트를 클릭하여 작동하는지 확인합니다.
  11. 카탈로그만들기를 클릭합니다.
  12. Access 페이지에서 사용자가 만든 카탈로그에 액세스할 수 있는 작업 영역을 선택합니다. 모든 작업 영역에 액세스할 수 있는 를 선택하거나, 작업 영역 할당을 클릭하고, 작업 영역을 선택한 다음 할당을 클릭합니다.
  13. 카탈로그의 모든 개체에 대한 액세스를 관리할 수 있는 소유자을 변경하세요. 텍스트 상자에 주체를 입력한 다음, 반환된 결과에서 해당 주체를 클릭합니다.
  14. 카탈로그에 권한을 부여하세요. 허용을 클릭합니다.
    1. 카탈로그의 개체에 액세스할 수 있는 주체 을 지정합니다. 텍스트 상자에 주체를 입력한 다음, 반환된 결과에서 해당 주체를 클릭합니다.
    2. 각 보안 주체에 부여할 권한 사전 설정 선택합니다. 모든 계정 사용자에게는 기본적으로 BROWSE 부여됩니다.
      • 드롭다운 메뉴에서 데이터 판독기 선택하여 카탈로그의 개체에 read 권한을 부여합니다.
      • 드롭다운 메뉴에서 데이터 편집기 선택하여 카탈로그의 개체에 readmodify 권한을 부여합니다.
      • 부여할 권한을 수동으로 선택합니다.
    3. Grant를 클릭합니다.
  15. 다음을 클릭합니다.
  16. 메타데이터 페이지에서 태그 키-값 쌍을 지정합니다. 자세한 내용은 Unity Catalog 보안 개체에 태그 적용을 참조하세요.
  17. (선택 사항) 메모를 추가합니다.
  18. 저장을 클릭합니다.

SQL

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

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

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

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

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

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

외국 카탈로그 만들기

Note

UI를 사용하여 데이터 원본에 대한 연결을 만드는 경우 외세의 카탈로그 만들기가 포함되며 이 단계를 건너뛸 수 있습니다.

외신 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 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 작업 영역에서 데이타 icon.Catalog 을 클릭하여 카탈로그 탐색기를 엽니다.

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

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

  3. 카탈로그 만들기외국 카탈로그를 만들기 위한 지침을 따릅니다.

SQL

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

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

ANSI 규정 준수

Teradata 커넥터는 Databricks Runtime 17.1부터 시작하는 모든 세션에 기본적으로 사용합니다 TMODE=ANSI . 이 설정은 문자열 비교 및 숫자 작업 동작을 Azure Databricks 기본적으로 사용하는 ANSI SQL 방언에 맞춥니다. 모드에서 ANSI 문자열 비교는 대/소문자를 구분하는 반면 Teradata의 레거시 TERA 모드에서는 대/소문자를 구분하지 않습니다(예 'ABC' = 'abc' : true로 평가됨). ANSI 사용 Azure Databricks 컴퓨팅에서 Teradata를 쿼리할 때 레거시 동작이 예기치 않은 결과를 생성할 수 있습니다.

중요합니다

Databricks Runtime 17.1 이상, Databricks SQL 또는 서버리스 컴퓨팅으로 전환하면 기본 세션 모드가 변경됩니다 TERAANSI. 특히 대/소문자를 구분하지 않는 문자열 일치를 사용하는 Teradata 뷰의 경우 쿼리 결과에 영향을 줄 수 있습니다. 예를 들어, 필터가 있는 WHERE status = 'Active' 뷰는 기본 데이터에 'ACTIVE' 또는 'active'가 포함되어 있으면 ANSI 모드에서 이를 서로 다른 값으로 처리하기 때문에 다른 결과를 반환할 수 있습니다.

지원되는 푸시다운

다음 표에서는 Teradata에 지원되는 푸시다운 작업과 각각에 필요한 컴퓨팅을 나열합니다.

푸시다운 지원되는 컴퓨팅
Aggregates 모든 컴퓨팅 지원됨
Cast 모든 컴퓨팅 지원됨
포함, 시작으로 시작, 끝으로 끝남, 유사한 모든 컴퓨팅 지원됨
Filters 모든 컴퓨팅 지원됨
Limit 모든 컴퓨팅 지원됨
Projections 모든 컴퓨팅 지원됨
Joins 지원됨 Databricks Runtime 17.2 이상 및 SQL 웨어하우스 컴퓨팅. 이 푸시다운은 공개 미리 보기로 제공됩니다. 미리 보기 페이지에서 페더레이션된 쿼리 토글에 대한 조인 푸시다운을 사용하도록 설정합니다.

데이터 형식 매핑

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

Teradata 형식 스파크 유형
Byte, Blob BinaryType
Byteint, Smallint, Integer IntegerType
BigInt LongType
Float, Double, Double Precision DoubleType
Number(n, m) DecimalType
Number(*, m), Number(*), Number Unsupported
Varchar(N) StringType
Time, Timestamp TimestampType

추가 리소스