페더레이션 쿼리(레이크하우스 페더레이션)
적용 대상: Databricks SQL
Databricks Runtime 13.3 LTS 이상
Unity 카탈로그만 표시
쿼리 페더레이션을 사용하면 Azure Databricks가 다른 Azure Databricks 메타스토어에서 제공하는 데이터뿐만 아니라 PostgreSQL, mySQL및 Snowflake같은 많은 타사 DBMS(데이터베이스 관리 시스템)에 대해 쿼리를 실행할 수 있습니다.
다른 시스템의 데이터를 쿼리하려면 다음을 수행해야 합니다.
- 외세의 연결을 만듭니다. 이렇게 하면 특정 페더레이션된 서버가 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;
...