Skip to main content
Apache NiFi 是一款开源工作流管理软件,用于自动化不同软件系统之间的数据流转。它支持创建 ETL 数据管道,并内置了 300 多种数据处理器。本分步教程将介绍如何将 Apache NiFi 连接到 ClickHouse,使其既可作为源端,也可作为目标端,并加载一个样本数据集。
1

准备连接信息

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

下载并运行 Apache NiFi

对于全新部署,请从 https://nifi.apache.org/download.html 下载二进制程序,然后运行 ./bin/nifi.sh start 启动服务
3

下载 ClickHouse JDBC 驱动

  1. 访问 GitHub 上的 ClickHouse JDBC 驱动发布页面,查找最新的 JDBC 发布版本
  2. 在该发布版本页面中,点击 “Show all xx assets”,然后找到文件名中包含关键字 “shaded” 或 “all” 的 JAR 文件,例如 clickhouse-jdbc-0.5.0-all.jar
  3. 将该 JAR 文件放在 Apache NiFi 可访问的文件夹中,并记下其绝对路径
4

添加 DBCPConnectionPool Controller Service 并配置其属性

  1. 要在 Apache NiFi 中配置 Controller Service,请点击“齿轮”按钮,进入 NiFi Flow Configuration 页面
  2. 选择 Controller Services 选项卡,然后点击右上角的 + 按钮,添加新的 Controller Service
  3. 搜索 DBCPConnectionPool,然后点击“Add”按钮
  4. 新添加的 DBCPConnectionPool 默认处于 Invalid 状态。点击“齿轮”按钮开始配置
  5. 在“Properties”部分中,输入以下值
  1. 在 Settings 部分中,将 Controller Service 的名称改为“ClickHouse JDBC”,以便后续识别
  2. 点击“lightning”按钮,然后点击“Enable”按钮,启用 DBCPConnectionPool Controller Service
  3. 检查 Controller Services 选项卡,确认该 Controller Service 已启用
5

使用 ExecuteSQL 处理器从表中读取数据

  1. 添加 ExecuteSQL 处理器,以及相应的上游和下游处理器
  2. 在 ExecuteSQL 处理器的 “Properties” 部分中,填写以下值
  3. 启动 ExecuteSQL 处理器
  4. 要确认查询已成功处理,请检查输出队列中的一个 FlowFile
  5. 将视图切换为 “formatted”,查看输出 FlowFile 的结果
6

使用 MergeRecord 和 PutDatabaseRecord 处理器向表中写入数据

  1. 要在一次插入中写入多行,首先需要将多条记录合并为一条记录。这可以通过 MergeRecord 处理器实现
  2. 在 MergeRecord 处理器的 “Properties” 部分中,填入以下值
  3. 要确认多条记录已合并为一条记录,请检查 MergeRecord 处理器的输入和输出。注意,输出是一个包含多条输入记录的数组 输入 输出
  4. 在 PutDatabaseRecord 处理器的 “Properties” 部分中,填入以下值
  5. 要确认每次 insert 都包含多行,请检查表中的行数是否每次至少按 MergeRecord 中定义的 “Minimum Number of Records” 的值递增。
  6. 恭喜——你已成功使用 Apache NiFi 将数据加载到 ClickHouse 中!
最后修改于 2026年6月10日