azureBlobStorage 表函数
是将 Azure Blob 存储中的数据摄取到
ClickHouse 的一种快速便捷的方法。不过,出于以下原因,它并不总是适用:
- 你的数据可能并不存储在 Azure Blob 存储中——例如,可能位于 Azure SQL Database、Microsoft SQL Server 或 Cosmos DB 中。
- 安全策略可能会完全禁止对 Blob 存储的外部访问——例如,如果存储账户被锁定且没有公共端点。
你可以通过
使用 Azure Data Factory 的自托管集成运行时,避免将 ClickHouse 实例暴露到互联网。
这种设置允许
通过私有网络发送数据。不过,这超出了本文的讨论范围。
你可以在官方指南中了解更多信息:
创建并配置自托管集成
运行时
将 ClickHouse 变成 REST 服务
Azure Data Factory 可使用其内置的
encodeUriComponent 函数自动处理这种编码,因此无需手动编码。col_1、col_2 和 col_3。
JSONEachRow 输入完全兼容。
如你所见,在这一步中,你无需在 ClickHouse
端做任何特殊处理。HTTP 接口 已经提供了充当
类 REST 端点所需的一切——无需额外配置。
现在我们已经让 ClickHouse 像 REST 端点一样工作,接下来就该
配置 Azure Data Factory 来使用它了。
在接下来的步骤中,我们将创建一个 Azure Data Factory 实例,设置一个指向你的 ClickHouse 实例的 链接服务,为
REST sink
定义一个 数据集,并创建一个 Copy Data activity,将数据从 Azure 发送到 ClickHouse。
创建 Azure Data Factory 实例
- 登录 Microsoft Azure 门户,然后点击 Create a resource。
- 在左侧的 Categories 窗格中,选择 Analytics,然后点击 热门服务列表中的 Data Factory。
- 选择你的订阅和资源组,为新的 Data Factory 实例输入名称,选择区域,并将版本保留为 V2。
- 点击 Review + Create,然后点击 Create 以开始部署。
创建新的基于 REST 的链接服务
- 登录 Microsoft Azure 门户并打开你的 Data Factory 实例。
- 在 Data Factory 概述页面中,点击 Launch Studio。
- 在左侧菜单中,选择 Manage,然后进入 Linked services, 再点击 + New 创建新的链接服务。
- 在 New linked service search bar 中,输入 REST,选择 REST,然后点击 Continue, 创建一个 REST connector 实例。
- 在链接服务配置面板中,为新服务输入名称, 点击 Base URL 字段,然后点击 Add dynamic content (该链接仅在 选中此字段时显示) 。
- 在动态内容面板中,你可以创建参数化 URL, 这样便可在稍后为不同 表创建数据集时再定义查询——从而让该链接服务可重复使用。
-
点击过滤器输入框旁边的 ”+“,添加一个新参数,并将其命名为
pQuery,将类型设置为 String,将默认值设置为SELECT 1。 点击 Save。 -
在表达式字段中,输入以下内容并点击 OK。将
your-clickhouse-url.com替换为你的 ClickHouse 实例的实际地址。 - 返回主表单后,选择基本身份验证,输入用于连接 ClickHouse HTTP 接口的用户名和 密码,然后点击 Test connection。如果配置无误,你将看到成功 消息。
- 点击 Create 完成设置。
为 ClickHouse HTTP 接口创建新数据集
-
打开你常用的 ClickHouse 查询控制台——可以是
ClickHouse Cloud Web UI、CLI 客户端,或你用于
运行查询的任何其他接口——然后创建目标表:
- 在 Azure Data Factory Studio 中,在左侧窗格选择 Author。将鼠标悬停 在 Dataset 项上,点击三点图标,然后选择 New dataset。
- 在搜索栏中输入 REST,选择 REST,然后点击 Continue。 为数据集输入名称,并选择你在上一步中创建的 链接服务。 点击 OK 以创建数据集。
-
现在,你应该能在左侧 Factory Resources 窗格中的 Datasets
部分看到新创建的数据集。选择该数据集以
打开其属性。你会看到在
链接服务中定义的
pQuery参数。点击 Value 文本字段,然后点击 Add dynamic content。 -
在打开的窗格中,粘贴以下查询:
- 点击 OK 保存表达式。点击 Test connection。如果一切都已 配置正确,你会看到 Connection successful 消息。点击页面顶部的 Publish all 以保存更改。
设置示例数据集
为使本指南重点更明确,我们不会详细介绍如何在 Azure Data Factory 中创建
源数据集的具体步骤。你可以将样本数据上传到你选择的任何
存储服务,例如 Azure Blob 存储、Microsoft SQL
Server,甚至 Azure Data Factory 支持的其他文件格式。
创建用于将数据传输到 ClickHouse 的复制活动
sensors 表中。
- 打开 Azure Data Factory Studio,进入 Author 选项卡。在 Factory Resources 窗格中,将鼠标悬停在 Pipeline 上,点击三点 图标,然后选择 New pipeline。
- 在 Activities 窗格中,展开 Move and transform 部分,然后将 Copy data 活动拖到画布上。
- 选择 Source 选项卡,然后选择你之前创建的源数据集。
-
转到 Sink 选项卡,选择为
sensors表创建的 ClickHouse 数据集。将 Request method 设置为 POST。确保 HTTP compression type 设置为 None。
我们建议保留默认的批次大小 10,000,甚至进一步调大。
更多详情,请参阅
选择插入策略 / 同步时的批次插入。
- 点击画布顶部的 Debug 以运行该管道。稍等片刻后, 该活动将进入队列并开始执行。如果所有配置都正确, 任务应以 Success 状态完成。
- 完成后,点击 Publish all 以保存管道和数据集的更改。