跳到主要内容
跳到主要内容
编辑此页

AzureBlobStorage 表引擎

此引擎提供与 Azure Blob Storage 生态系统的集成。

创建表

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)。
  • container_name - 容器名称
  • blobpath - 文件路径。在只读模式下支持以下通配符:***?{abc,def}{N..M},其中 NM — 数字,'abc''def' — 字符串。
  • account_name - 如果使用 storage_account_url,则可以在此处指定帐户名
  • account_key - 如果使用 storage_account_url,则可以在此处指定帐户密钥
  • format — 文件的 格式
  • compression — 支持的值:nonegzip/gzbrotli/brxz/LZMAzstd/zst。默认情况下,它将通过文件扩展名自动检测压缩。(与设置为 auto 相同)。

示例

用户可以使用 Azurite 模拟器进行本地 Azure Storage 开发。更多详情请点击此处。如果使用 Azurite 的本地实例,用户可能需要在以下命令中将 http://azurite1:10000 替换为 https://127.0.0.1:10000,其中我们假设 Azurite 在主机 azurite1 上可用。

CREATE TABLE test_table (key UInt64, data String)
ENGINE = AzureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', '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 — 文件的路径。类型:LowCardinality(String)
  • _file — 文件的名称。类型:LowCardinality(String)
  • _size — 文件大小(字节)。类型:Nullable(UInt64)。如果大小未知,则值为 NULL
  • _time — 文件的上次修改时间。类型:Nullable(DateTime)。如果时间未知,则值为 NULL

身份验证

目前有 3 种身份验证方式

  • 托管身份 - 可以通过提供端点、connection_string 或 storage_account_url 来使用。
  • SAS 令牌 - 可以通过提供端点、connection_string 或 storage_account_url 来使用。它通过 URL 中是否存在 '?' 来识别。
  • 工作负载身份 - 可以通过提供端点或 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/;', 'testcontainer', 'test_table', 'CSV')
SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1;
  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>
  1. 从 clickhouse storage_configuration 部分重用缓存配置(以及缓存存储),此处描述

另请参阅

Azure Blob Storage 表函数