페더레이션 쿼리(레이크하우스 페더레이션)
적용 대상: Databricks SQL Databricks Runtime 13.3 LTS 이상 Unity Catalog만
쿼리 페더레이션을 사용하면 Azure Databricks가 다른 Azure Databricks metastores 제공하는 데이터뿐만 아니라 PostgreSQL, mySQL및 Snowflake같은 많은 타사 DBMS(데이터베이스 관리 시스템)에 대해 쿼리를 실행할 수 있습니다.
다른 시스템의 데이터를 쿼리하려면 다음을 수행해야 합니다.
- 외세의 연결을 만듭니다. 이렇게 하면 특정 페더레이션된 서버가 Unity Catalog에 등록되고, URL, 포트 및 credentials 같은 통신하는 수단이 설정됩니다.
- Unity Catalog 페더레이션된 서버에서 외신 catalogs 등록
- Grant 사용자가 외신 catalogs에 대한 액세스 권한을 얻습니다. 이 작업은 일반 보안 개체와 마찬가지로 catalog, schema또는 table 수준에서 수행할 수 있습니다.
이제 다양한 지역 및 대외 관계에서 쿼리를 실행할 수 있습니다.
외신 연결
외부 연결은 외부 서버를 식별하는 Unity Catalog 보안 개체입니다. CREATE CONNECTION의 일부로 서버에 액세스할 수 있는 URL where을 지정합니다.
또한 Azure Databricks가 통신하는 데 사용할 사용자 이름 및 암호 또는 기타 허용되는 인증과 같은 옵션을 제공해야 합니다.
외신 catalog
외부 연결(catalog/database.schema.table
)에서 3개 수준 네임스페이스를 지원할 경우, CREATE FOREIGN CATALOG 명령을 사용하여 Unity Catalog의 전체 catalogs을 등록할 수 있습니다.
Azure Databricks는 catalog스키마의 정의와 그 관계를 외부 소스와의 sync에 저장합니다.
예제
-- 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;
...