1
准备连接信息
要通过 HTTP(S) 连接到 ClickHouse,你需要以下信息:
选择 HTTPS。连接信息会显示在示例 
如果你使用的是自管理 ClickHouse,则连接信息由你的 ClickHouse 管理员配置。
你的 ClickHouse Cloud 服务的连接信息可在 ClickHouse Cloud 控制台中查看。
选择一个服务,然后点击 Connect:

curl 命令中。
2
下载并运行 Apache NiFi
对于全新部署,请从 https://nifi.apache.org/download.html 下载二进制程序,然后运行
./bin/nifi.sh start 启动服务3
下载 ClickHouse JDBC 驱动
- 访问 GitHub 上的 ClickHouse JDBC 驱动发布页面,查找最新的 JDBC 发布版本
- 在该发布版本页面中,点击 “Show all xx assets”,然后找到文件名中包含关键字 “shaded” 或 “all” 的 JAR 文件,例如
clickhouse-jdbc-0.5.0-all.jar - 将该 JAR 文件放在 Apache NiFi 可访问的文件夹中,并记下其绝对路径
4
添加 DBCPConnectionPool Controller Service 并配置其属性
- 要在 Apache NiFi 中配置 Controller Service,请点击“齿轮”按钮,进入 NiFi Flow Configuration 页面
-
选择 Controller Services 选项卡,然后点击右上角的
+按钮,添加新的 Controller Service -
搜索
DBCPConnectionPool,然后点击“Add”按钮 -
新添加的
DBCPConnectionPool默认处于 Invalid 状态。点击“齿轮”按钮开始配置 - 在“Properties”部分中,输入以下值
- 在 Settings 部分中,将 Controller Service 的名称改为“ClickHouse JDBC”,以便后续识别
-
点击“lightning”按钮,然后点击“Enable”按钮,启用
DBCPConnectionPoolController Service
- 检查 Controller Services 选项卡,确认该 Controller Service 已启用
5
使用 ExecuteSQL 处理器从表中读取数据
-
添加
ExecuteSQL处理器,以及相应的上游和下游处理器 -
在
ExecuteSQL处理器的 “Properties” 部分中,填写以下值 -
启动
ExecuteSQL处理器 -
要确认查询已成功处理,请检查输出队列中的一个
FlowFile -
将视图切换为 “formatted”,查看输出
FlowFile的结果
6
使用 MergeRecord 和 PutDatabaseRecord 处理器向表中写入数据
-
要在一次插入中写入多行,首先需要将多条记录合并为一条记录。这可以通过
MergeRecord处理器实现 -
在
MergeRecord处理器的 “Properties” 部分中,填入以下值 -
要确认多条记录已合并为一条记录,请检查
MergeRecord处理器的输入和输出。注意,输出是一个包含多条输入记录的数组 输入 输出 -
在
PutDatabaseRecord处理器的 “Properties” 部分中,填入以下值 -
要确认每次 insert 都包含多行,请检查表中的行数是否每次至少按
MergeRecord中定义的 “Minimum Number of Records” 的值递增。 - 恭喜——你已成功使用 Apache NiFi 将数据加载到 ClickHouse 中!