Skip to main content
La integración con el catálogo de SeaweedFS solo funciona con tablas Iceberg.
ClickHouse admite la integración con varios catálogos (Unity, Glue, REST, Polaris, etc.). Esta guía le mostrará cómo consultar sus datos con ClickHouse y el catálogo SeaweedFS. SeaweedFS es un almacén distribuido de archivos y objetos de código abierto con una puerta de enlace compatible con S3. Sus S3 Table Buckets proporcionan ambas partes de una implementación de Iceberg: el catálogo REST de Iceberg integrado sirve los metadatos de las tablas y el bucket de tablas almacena los datos de las tablas como archivos Parquet a través del mismo endpoint de S3:
  • Servicio único: los metadatos del catálogo y los datos Parquet se sirven desde un único proceso, sin una base de datos de metadatos independiente
  • Cumplimiento de la especificación de catálogo REST de Iceberg mediante la API REST
  • Mantenimiento en el servidor: compactación automática de archivos Parquet y expiración de snapshots, sin un servicio de mantenimiento externo
Dado que esta funcionalidad es experimental, debe habilitarla con: SET allow_experimental_database_iceberg = 1;

Configuración para desarrollo local

Para el desarrollo y las pruebas locales, puede ejecutar SeaweedFS y ClickHouse con Docker Compose. Este enfoque es ideal para aprender, crear prototipos y trabajar en entornos de desarrollo.

Requisitos previos

  1. Docker y Docker Compose: asegúrese de que Docker esté instalado y en ejecución
  2. Versiones: SeaweedFS 4.42 o posterior; ClickHouse 26.8 o posterior (las versiones desde la 25.8 pueden leer e insertar, pero para crear tablas mediante el catálogo se requiere la 26.8)
  3. Python con PyIceberg (opcional): se utiliza a continuación para inicializar datos de muestra

Configuración del catálogo local de SeaweedFS

Paso 1: Cree una carpeta nueva para ejecutar el ejemplo y, a continuación, cree un archivo s3config.json con las credenciales de la puerta de enlace de S3 y del catálogo:
Paso 2: Cree un archivo docker-compose.yml con la siguiente configuración:
El comando mini inicia toda la pila de SeaweedFS en un único contenedor. El indicador -tableBucket=analytics crea de antemano un bucket de S3 Tables llamado analytics, que sirve como warehouse de Iceberg. Paso 3: Ejecute el siguiente comando para iniciar los servicios:

Carga de datos de ejemplo

El catálogo está inicialmente vacío. Cree una tabla y añada algunas filas con PyIceberg (pip install pyiceberg pyarrow):

Conexión al catálogo local de SeaweedFS

Conéctese a su contenedor de ClickHouse:
A continuación, cree la conexión de base de datos con el catálogo de SeaweedFS:
Los argumentos del motor contienen las credenciales de S3 que ClickHouse utiliza para leer los datos de la tabla, mientras que catalog_credential y oauth_server_uri autentican en el propio catálogo mediante el flujo OAuth2 de credenciales de cliente. SeaweedFS acepta la misma clave de acceso y clave secreta para ambos.

Consultar tablas de catálogo de SeaweedFS con ClickHouse

Ahora que la conexión está establecida, puede empezar a realizar consultas a través del catálogo de SeaweedFS. Por ejemplo:
Se requieren comillas invertidasLas comillas invertidas son necesarias porque ClickHouse no admite más de un espacio de nombres.
Para consultar una tabla:

Crear tablas y escribir datos desde ClickHouse

También puede crear tablas en el catálogo de SeaweedFS y escribir directamente en ellas desde ClickHouse:
La cláusula del motor IcebergS3 especifica la ruta de almacenamiento de la nueva tabla, y write_full_path_in_iceberg_metadata hace que ClickHouse registre la ubicación completa de la tabla en el catálogo.
La creación de tablas mediante un catálogo requiere ClickHouse 26.8 o una versión posterior. Las versiones 26.4 a 26.7 escriben los archivos de la tabla antes de registrar el espacio de nombres, algo que SeaweedFS rechaza salvo que el espacio de nombres ya exista en el catálogo; las versiones anteriores a la 26.4 parecen funcionar correctamente, pero los archivos de la tabla se escriben en el almacenamiento de objetos sin registrarse en el catálogo.
Cuando ClickHouse confirma una inserción, el catálogo de SeaweedFS corrige los metadatos que el writer experimental todavía no genera: completa los ID de campo que faltan en los manifests, reescribe como ubicaciones absolutas las rutas de archivo relativas al bucket y asigna a la tabla una correspondencia de nombres predeterminada. Los readers estrictos, como PyIceberg y Spark, pueden entonces leer las filas escritas por ClickHouse. Esto requiere SeaweedFS 4.42 o una versión posterior.

Carga de datos desde su lago de datos en ClickHouse

Si necesita cargar datos del catálogo de SeaweedFS en ClickHouse, primero cree una tabla local de ClickHouse:
A continuación, cargue los datos de la tabla de catálogo de SeaweedFS mediante un INSERT INTO SELECT:
Última modificación el 16 de agosto de 2026