ClickHouse admite la integración con varios catálogos (Unity, Glue, Polaris, etc.). En esta guía, le mostraremos cómo consultar sus datos con ClickHouse y el catálogo Apache Polaris. Apache Polaris admite tablas Iceberg y tablas Delta (mediante Generic Tables). Por el momento, esta integración solo admite tablas Iceberg.
Requisitos previos
Para conectarse al catálogo Polaris, necesitará lo siguiente:
- Snowflake Open Catalog (Polaris alojado) o Polaris Catalog autohospedado
- El URI de su catálogo Polaris (por ejemplo,
https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1ohttp://polaris:8181/api/catalog/v1/oauth/tokens) - Las credenciales del catálogo (ID de cliente y secreto de cliente)
- El URI de los tokens de OAuth para su instancia de Polaris
- El endpoint de almacenamiento del almacén de objetos donde se encuentran sus datos de Iceberg (por ejemplo, S3)
- ClickHouse versión 26.1+
En Open Catalog, la oferta de Polaris gestionada por Snowflake, el URI incluirá /polaris, mientras que en una implementación autohospedada puede que no lo incluya.
Creación de una conexión entre Polaris y ClickHouse
Cree una base de datos que conecte ClickHouse con su catálogo Polaris:
CREATE DATABASE polaris_catalog
ENGINE = DataLakeCatalog('https://<catalog_uri>/api/catalog/v1')
SETTINGS
catalog_type = 'rest',
catalog_credential = '<client-id>:<client-secret>',
warehouse = 'snowflake',
auth_scope = 'PRINCIPAL_ROLE:ALL',
oauth_server_uri = 'https://<catalog_uri>/api/catalog/v1/oauth/tokens',
storage_endpoint = '<storage_endpoint>'Consultar el catálogo Polaris con ClickHouse
Una vez establecida la conexión, puede consultar Polaris:
USE polaris_catalog;
SHOW TABLES;Para consultar una tabla:
SELECT count(*) FROM `polaris_db.my_iceberg_table`;Para inspeccionar el DDL de la tabla:
SHOW CREATE TABLE `polaris_db.my_iceberg_table`;Cargar datos de Polaris en ClickHouse
Para cargar datos de Polaris en una tabla de ClickHouse, cree la tabla de destino con el esquema que desee y, a continuación, inserte los datos desde la tabla de Polaris:
CREATE TABLE my_clickhouse_table
(
-- defina las columnas para que coincidan con su tabla Iceberg
`id` Int64,
`name` String,
`event_time` DateTime64(3)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO my_clickhouse_table
SELECT * FROM polaris_catalog.`polaris_db.my_iceberg_table`;