跳转到主要内容
ClickHouse 提供表函数,可直接查询存储在对象存储中的开放表格式数据。无需连接外部 catalog,而是直接在原位置查询数据,类似于 AWS Athena 从 S3 读取数据的方式。 你可以在函数调用中直接传入存储路径和凭证,其余工作由 ClickHouse 处理。所有 ClickHouse SQL 语法和函数均可用,查询还可受益于 ClickHouse 的并行执行能力以及高效的原生 Parquet 读取器
Server、local 或 chDB本指南中的步骤可以通过现有的 ClickHouse server 安装来执行。对于即席查询,你也可以改用 clickhouse-local,无需运行 server 即可完成相同的工作流。稍作调整后,也可以使用 ClickHouse 的进程内发行版 chDB 完成这一过程。
以下示例使用存储在 S3 上各种湖仓格式中的 hits 数据集。对于每种湖格式,针对各个对象存储提供商都提供了专用函数。
iceberg 表函数 (icebergS3 的别名) 可直接从对象存储中读取 Iceberg 表。针对每种存储后端,均有对应的变体:icebergS3icebergAzureicebergHDFSicebergLocal示例语法:
GCS 支持这些函数的 S3 版本也可用于 Google Cloud Storage (GCS)。
示例:

集群 Variant

icebergS3Cluster 函数可将读取操作分布到 ClickHouse 集群中的多个节点上。发起节点与所有节点建立连接,并动态分发数据文件。每个工作线程节点按需请求并处理任务,直至所有文件读取完毕。icebergClustericebergS3Cluster 的别名。此外,Azure (icebergAzureCluster) 和 HDFS (icebergHDFSCluster) 也有对应的变体版本。示例语法:
示例 (ClickHouse Cloud) :

表引擎

除了在每次查询中使用表函数外,您也可以使用 Iceberg 表引擎 创建持久化表。数据仍存储在对象存储中,按需读取,不会复制到 ClickHouse 中。其优势在于,表定义保存在 ClickHouse 中,可在用户和会话之间共享,无需每个用户单独指定存储路径和凭据。每种存储后端均有对应的引擎变体:IcebergS3 (或 Iceberg 别名) 、IcebergAzureIcebergHDFSIcebergLocal表引擎和表函数均支持数据缓存,其缓存机制与 S3、AzureBlobStorage 和 HDFS 存储引擎相同。此外,metadata cache 会将 manifest 文件信息存储在内存中,以减少对 Iceberg 元数据的重复读取。该缓存默认通过 use_iceberg_metadata_files_cache 设置启用。示例语法:表引擎 IcebergIcebergS3 的别名。
GCS 支持该表引擎的 S3 变体可用于 Google Cloud Storage (GCS)。
示例:
有关支持的功能 (包括分区裁剪、schema 演进、时间旅行、缓存等) ,请参阅支持矩阵。如需完整参考信息,请查阅 iceberg 表函数Iceberg 表引擎文档。
最后修改于 2026年7月2日