Azure Blob 存储表引擎
此引擎提供与 Azure Blob 存储 生态系统的集成。
创建表
CREATE TABLE azure_blob_storage_table (name String, value UInt32)
ENGINE = AzureBlobStorage(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression])
[PARTITION BY expr]
[SETTINGS ...]
引擎参数
endpoint
— 具有容器和前缀的 AzureBlobStorage 端点 URL。可选地,如果使用的身份验证方法需要它,可以包含 account_name。(http://azurite1:{port}/[account_name]{container_name}/{data_prefix}) 或这些参数可以使用 storage_account_url、account_name 和 container 分别提供。为了指定前缀,应该使用端点。endpoint_contains_account_name
- 此标志用于指定端点是否包含 account_name,因为它仅在某些身份验证方法中需要。(默认值:true)connection_string|storage_account_url
— connection_string 包含帐户名称和密钥 (创建连接字符串) 或者您也可以在这里提供存储帐户 URL 以及 account_name 和 account_key 作为单独的参数(参见参数 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
相同)。
示例
CREATE TABLE test_table (key UInt64, data String)
ENGINE = AzureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;',
'test_container', 'test_table', 'CSV');
INSERT INTO test_table VALUES (1, 'a'), (2, 'b'), (3, 'c');
SELECT * FROM test_table;
┌─key──┬─data──┐
│ 1 │ a │
│ 2 │ b │
│ 3 │ c │
└──────┴───────┘
虚拟列
_path
— 文件的路径。类型:LowCardinalty(String)
。_file
— 文件的名称。类型:LowCardinalty(String)
。_size
— 文件的大小(以字节为单位)。类型:Nullable(UInt64)
。如果大小未知,则值为NULL
。_time
— 文件的最后修改时间。类型:Nullable(DateTime)
。如果时间未知,则值为NULL
。
身份验证
目前有 3 种身份验证方式
托管标识
- 可以通过提供endpoint
、connection_string
或storage_account_url
来使用。SAS 令牌
- 可以通过提供endpoint
、connection_string
或storage_account_url
来使用。它由 URL 中 '?' 的存在识别。工作负载标识
- 可以通过提供endpoint
或storage_account_url
来使用。如果在配置中设置了use_workload_identity
参数,则使用 (工作负载标识) 进行身份验证。
数据缓存
Azure
表引擎支持在本地磁盘上缓存数据。请参阅 本节 中的文件系统缓存配置选项和用法。缓存是根据存储对象的路径和 ETag 生成的,因此 Clickhouse 不会读取陈旧的缓存版本。
要启用缓存,请使用设置 filesystem_cache_name = '<name>'
和 enable_filesystem_cache = 1
。
SELECT *
FROM azureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'test_container', 'test_table', 'CSV')
SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1;
- 将以下部分添加到 Clickhouse 配置文件中
<clickhouse>
<filesystem_caches>
<cache_for_azure>
<path>path to cache directory</path>
<max_size>10Gi</max_size>
</cache_for_azure>
</filesystem_caches>
</clickhouse>
- 从 Clickhouse
storage_configuration
部分重用缓存配置(以及因此的缓存存储),此处描述