페더레이션 쿼리(레이크하우스 페더레이션)
적용 대상: Databricks SQL Databricks Runtime 13.3 LTS 이상 Unity 카탈로그만
쿼리 페더레이션을 사용하면 Azure Databricks가 PostgreSQL, mySQL 및 Snowflake와 같은 많은 타사 DBMS(데이터베이스 관리 시스템)뿐만 아니라 다른 Azure Databricks 메타스토어에서 제공하는 데이터에 대해 쿼리를 실행할 수 있습니다.
다른 시스템의 데이터를 쿼리하려면 다음을 수행해야 합니다.
- 외세의 연결을 만듭니다. 이렇게 하면 특정 페더레이션된 서버가 Unity 카탈로그에 등록되고 사용된 URL, 포트 및 자격 증명과 같은 통신 수단을 설정합니다.
- Unity 카탈로그를 사용하여 페더레이션된 서버의 외국 카탈로그 등록
- 사용자에게 외국 카탈로그에 대한 액세스 권한을 부여 합니다. 일반 보안 개체와 마찬가지로 카탈로그, 스키마 또는 테이블 수준에서 이 작업을 수행할 수 있습니다.
이제 다양한 지역 및 대외 관계에서 쿼리를 실행할 수 있습니다.
외신 연결
외세의 연결은 외세의 서버를 식별하는 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;
...