AzureBlobStorage 表引擎
此引擎提供与 Azure Blob 存储 生态系统的集成。
创建表
引擎参数
endpoint— 带有容器和前缀的 Azure Blob 存储 端点 URL。如所用的认证方式需要,还可以选择在其中包含 account_name。 (http://azurite1:{port}/[account_name]{container_name}/{data_prefix}) 或者也可以通过storage_account_url、account_name和container单独提供这些参数。要指定前缀时,应使用endpoint。endpoint_contains_account_name- 此标志用于指定endpoint是否包含account_name,因为只有某些认证方式才需要它。 (默认值:true)connection_string|storage_account_url—connection_string包含账户名和密钥 (创建 connection string) ,或者你也可以在此处提供 storage account URL,并通过单独的参数提供账户名和账户密钥 (参见参数account_name和account_key) 。container_name- 容器名称。blobpath- 文件路径。在只读模式下支持以下通配符:*、**、?、{abc,def}和{N..M},其中N、M为数字,'abc'、'def'为字符串。account_name- 如果使用storage_account_url,则可在此处指定账户名。account_key- 如果使用storage_account_url,则可在此处指定账户密钥。format— 文件的格式。compression— 支持的值:none、gzip/gz、brotli/br、xz/LZMA、zstd/zst。默认会通过文件扩展名自动检测压缩类型 (等同于设置为auto) 。partition_strategy– 选项:WILDCARD或HIVE。WILDCARD要求在路径中包含{_partition_id},该占位符会被分区键替换。HIVE不允许使用通配符,假定路径为表的根路径,并生成 Hive 风格的分区目录,文件名为 Snowflake ID,扩展名为文件格式。默认值为WILDCARD。partition_columns_in_data_file- 仅在使用HIVE分区策略时有效。告知 ClickHouse 是否应在数据文件中写入分区列。默认值为false。extra_credentials- 使用client_id和tenant_id进行认证。如果提供了extra_credentials,则其优先级高于account_name和account_key。
示例
用户可以使用 Azurite 仿真器进行本地 Azure Storage 开发。详情见此处。如果使用本地的 Azurite 实例,用户可能需要在下面的命令中将 http://azurite1:10000 替换为 http://localhost:10000,其中我们假设 Azurite 可通过主机 azurite1 访问。
虚拟列
_path— 文件路径。类型:LowCardinality(String)。_file— 文件名。类型:LowCardinality(String)。_size— 文件大小 (字节数) 。类型:Nullable(UInt64)。如果大小未知,则值为NULL。_time— 文件的最后修改时间。类型:Nullable(DateTime)。如果时间未知,则值为NULL。
身份验证
当前有 3 种身份验证方式:
Managed Identity- 可以通过提供endpoint、connection_string或storage_account_url进行身份验证。SAS Token- 可以通过提供endpoint、connection_string或storage_account_url进行身份验证。通过 URL 中是否包含?来识别。示例参见 azureBlobStorage。Workload Identity- 可以通过提供endpoint或storage_account_url进行身份验证。如果在配置中设置了use_workload_identity参数,则会使用 workload identity 进行身份验证。
数据缓存
Azure 表引擎支持在本地磁盘上进行数据缓存。
有关文件系统缓存配置选项及用法,请参见本节。
缓存基于存储对象的路径和 ETag,因此 ClickHouse 不会读取过期的缓存版本。
要启用缓存,请设置 filesystem_cache_name = '<name>' 和 enable_filesystem_cache = 1。
- 在 ClickHouse 配置文件中添加以下节:
- 复用 ClickHouse
storage_configuration部分中的缓存配置 (以及相应的缓存存储) ,见此处
PARTITION BY
PARTITION BY —— 可选。在大多数情况下不需要分区键;即便需要,一般也不需要比按月更细的分区键。分区不会加速查询 (与 ORDER BY 表达式相反) 。切勿使用粒度过细的分区。不要按客户端标识符或名称对数据进行分区 (相反,应将客户端标识符或名称作为 ORDER BY 表达式中的第一列) 。
对于按月分区,使用 toYYYYMM(date_column) 表达式,其中 date_column 是类型为 Date 的日期列。这里的分区名称采用 "YYYYMM" 格式。
分区策略
WILDCARD (默认) :将文件路径中的 {_partition_id} 通配符替换为实际的分区键。不支持读取。
HIVE 为读写实现 Hive 风格的分区。读取通过递归 glob 模式完成。写入生成的文件采用以下格式:<prefix>/<key1=val1/key2=val2...>/<snowflakeid>.<toLower(file_format)>。
注意:使用 HIVE 分区策略时,use_hive_partitioning 设置不起任何作用。
HIVE 分区策略示例: