페더레이션 쿼리(레이크하우스 페더레이션)

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 13.3 LTS 이상 검사 '예'로 표시 Unity 카탈로그만

쿼리 페더레이션을 사용하면 Azure Databricks가 PostgreSQL, mySQLSnowflake와 같은 많은 타사 DBMS(데이터베이스 관리 시스템)뿐만 아니라 다른 Azure Databricks 메타스토어에서 제공하는 데이터에 대해 쿼리를 실행할 수 있습니다.

다른 시스템의 데이터를 쿼리하려면 다음을 수행해야 합니다.

  1. 외세의 연결을 만듭니다. 이렇게 하면 특정 페더레이션된 서버가 Unity 카탈로그에 등록되고 사용된 URL, 포트 및 자격 증명과 같은 통신 수단을 설정합니다.
  2. Unity 카탈로그를 사용하여 페더레이션된 서버의 외국 카탈로그 등록
  3. 사용자에게 외국 카탈로그에 대한 액세스 권한을 부여 합니다. 일반 보안 개체와 마찬가지로 카탈로그, 스키마 또는 테이블 수준에서 이 작업을 수행할 수 있습니다.

이제 다양한 지역 및 대외 관계에서 쿼리를 실행할 수 있습니다.

외신 연결

외세의 연결은 외세의 서버를 식별하는 Unity 카탈로그 보안 개체입니다. CREATE CONNECTION일부로 서버에 액세스할 수 있는 URL을 지정합니다.

또한 Azure Databricks가 통신하는 데 사용할 사용자 이름 및 암호 또는 기타 허용되는 인증과 같은 옵션을 제공해야 합니다.

외국 카탈로그

3개 수준 네임스페이스(catalog/database.schema.table)를 지원하는 외세의 연결이 있는 경우 CREATE FOREIGN CATALOG 명령을 사용하여 Unity 카탈로그에 전체 카탈로그를 등록할 수 있습니다. Azure Databricks는 카탈로그 스키마 및 해당 관계의 정의를 외세의 원본과 동기화된 상태로 유지합니다.

예제

-- Create a postgresql connection
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
       port '5432',
       user 'postgresql_user',
       password 'password123');

-- Alternatively create a postgresql connection with secret scope
> CREATE CONNECTION postgresql_connection
    TYPE POSTGRESQL
    OPTIONS (
       host 'qf-postgresql-demo.xxxxxx.us-west-2.rds.amazonaws.com',
       port '5432',
       user secret('secrets.r.us', 'postgresUser'),
       password secret('secrets.r.us', 'postgresPassword'));

-- Expose the "postgresdb" database with schemas and tables postgresql_user can access.
> CREATE FOREIGN CATALOG postgresql_catalog
    USING CONNECTION postgresql_connection
    OPTIONS (database 'postgresdb');

-- Execute a query across tables in the above catalog, schema, and table.
> SELECT * FROM postgresql_catalog.a_schema.table1
  UNION ALL
  SELECT * FROM default.postgresql_schema.table2
  UNION ALL
  SELECT * FROM default.postgresql.mytable
  UNION ALL
  SELECT local_table;
  ...