开源 ETL(Extract,Transform,Load)工具之Apache Hop

作者:西京刀客日期:2025/10/16

文章目录

  • 开源 ETL(Extract,Transform,Load)工具之Apache Hop
    • Apache Hop起源与背景
    • 什么是Apache Hop
    • apache hop 核心概念
      • Tools(工具)
        • Item types(条目类型)
        • Projects(项目)
        • 关键概念对比与应用建议
    • 术语对照
    • 下载安装
    • 使用
      • 在 Hop GUI 中创建 Pipeline(步骤)
    • Apache Hop 的局限
    • Apache Hop 的外部插件仓库(hop-plugins)
    • 参考

开源 ETL(Extract,Transform,Load)工具之Apache Hop

Apache Hop起源与背景

1、Hop 最初(2019年底)是作为 Kettle(Pentaho Data Integration,PDI)的一个分支而启动的。Hop 是一个相对较新的项目,于 2020 年成为 Apache 软件基金会的顶级项目。它由 Kettle 的原始创建者 Tyler Mitchell 领导,旨在解决 PDI 中的一些限制,并提供更现代化的架构。

2、Kettle (PDI): Kettle 最初由 Pentaho 开发,是一个功能齐全的数据集成工具。Pentaho 后来被 Hitachi Vantara 收购,尽管如此,PDI 仍然是一个活跃的开源项目,拥有庞大的用户社区和丰富的插件生态系统。

3、Hop和Kettle/PDI是独立的项目,各自有自己的路线图和优先级。鉴于这些不同的路线图、架构愿景和开发轨迹,Hop和Kettle/PDI是不兼容的。由于Hop与Kettle/PDI有着共同的历史,Hop社区提供了一种方法,尽可能无缝地将现有的PDI/Kettle项目导入Hop。

Hop vs Kettle
hop官方对比原文https://hop.apache.org/tech-manual/latest/hop-vs-kettle/index.html

什么是Apache Hop

官网:http://hop.apache.org/

Apache Hop 是一个开源的数据编排、数据工程和数据集成平台,它源自流行的ETL 工具Kettle(也称作Pentaho Data Integration,PDI),并由Kettle 的原作者主导开发。

该平台使用可视化设计器来构建和管理数据管道(Pipelines)和工作流(Workflows),提供了一种**“一次设计,处处运行”的轻量级架构**,支持本地、云端、容器和物联网等多种场景,并可扩展到不同的执行引擎(如Apache Spark, Apache Flink, Google Dataflow 等)。

Apache Hop 的主要特点包括:

  • 可视化开发,提供了图形界面用于设计工作流(workflow)和数据管道(pipeline),用户可以专注于业务逻辑而不是代码实现。
  • 跨引擎支持,工作流和数据管道支持原生 Hop 引擎的本地和远程运行,数据管道也可以通过 Apache Spark、Apache Flink 以及 Google Dataflow 运行。
  • 内置生命周期管理,Hop Gui 工具提供了不同的项目、环境以及运行时配置等管理功能。
  • 元数据驱动,使用元数据(Metadata)描述针对数据的操作以及工作流和数据管道的编排,同时对于各种插件和功能的使用也通过元数据进行定义。

Apache Hop 常用的业务场景如下:

  • 大数据加载,利用云环境、集群以及大规模并行处理将海量数据加载到数据库中。
  • 数据仓库,利用内置的 SCD、CDC 以及代理主键创建功能执行 ETL 任务。
  • 数据集成,实现关系型数据库、文件系统、NoSQL 数据库等不同架构的数据整合。
  • 数据迁移,完成不同数据库和系统之间的数据迁移。
  • 数据分析和数据清洗。

apache hop 核心概念

Tools(工具)

  • Hop Conf:命令行工具,配置工具
    Hop Conf 是一个命令行工具,用于管理您 Hop 配置的各个方面:项目、环境、云配置等。
    具体的文件为hop-conf.sh或者hop-conf.bat,可以通过./hop-conf.sh -help 命令查看具体的参数。
  • Hop Encrypt:命令行工具,加密工具(加密/解密敏感信息)
    Hop Encrypt 是一个命令行工具,用于对明文密码进行混淆或加密,以便在 XML、密码或元数据文件中使用。请确保也将密码加密前缀复制,以指示密码的混淆性质。这样,Hop 就能够区分常规的明文密码和混淆后的密码。
  • Hop Gui:图形用户界面(IDE),用于可视化设计与调试 Pipeline / Workflow
    Hop Gui 是一个可视化 IDE,Hop 数据开发者可以在其中创建、测试、运行和管理工作流和管道的生命周期。除了开发和生命周期管理功能外,Hop Gui 还包含用于管理项目和环境的工具和视角,用于搜索和管理元数据的工具和视角,用于管理和版本控制各种文件的工具和视角,以及用于在 Neo4j 图形中探索日志的工具和视角。
  • Hop Run:命令行工具,运行工作流/转换(适用于自动化与调度)
    Hop Run 是一个命令行工具,用于运行工作流和管道,并提供选项以(列出或)指定项目、环境、属性和运行配置。
  • Hop Search:搜索工具,用于查找元数据或项目项
    Hop Server 是一个用于管理和运行工作流和管道的 Web 服务接口。其本质就是一个jetty web 容器。
  • Hop Server:web 容器,管理和运行工作流与管道(远程部署与运行)
  • hop-import:命令行工具,用于将第三方 ETL(如 Kettle)导入为 Hop 格式

Item types(条目类型)

Pipeline(管道)
Transform(单个转换组件)
hop(连接/通道,传输行数据)
作用:行级数据处理(ETL)
Workflow(工作流)
Action(操作,工作流中的步骤)
Pipeline(在工作流中作为子流程执行)
Workflow(子工作流)
其他 Action(文件操作、脚本、通知等)
hop(连接/控制流)
作用:控制流程、任务调度与条件执行

Projects(项目)

配置 / 变量
项目级变量与参数,用于不同环境间切换
Metadata(元数据)
数据库连接、文件连接等集中管理
Environment(环境)
示例:dev(开发)、prod(生产)
Pipeline
项目内保存的转换定义
Workflow
项目内保存的工作流定义

关键概念对比与应用建议

Pipeline vs Workflow
Pipeline:
处理行级数据(ETL)
由多个 Transform 通过 hop 连接
Workflow:
管理控制流 / 任务流
由多个 Action 组成,用于调度、条件控制、触发 pipeline
建议:将数据转换逻辑放在 Pipeline,使用 Workflow 编排 Pipeline(顺序、并行、错误处理等)

核心构成:Pipeline(数据转换),Workflow(执行控制),Projects(组织与配置)

术语对照

PDI 的 Transformation/Step/Job/Spoon
对应 Hop 的 Pipeline/Transform/Workflow/Hop GUI
概念相近,仅命名不同。

在这里插入图片描述

Item types(条目类型)

1)Action

一个动作(Action)是工作流中执行的一个操作。默认情况下,动作按顺序执行,但也可以配置为并行执行。动作返回一个真(true)或假(false)的退出代码,该代码可以在工作流的执行中使用(或忽略)。

2)Hop(连线/跳)

在 Hop 中,Hops 将工作流中的动作(Actions)或管道中的转换(Transforms)连接起来。

在工作流中,Hops 根据前一个动作的退出状态进行操作;

在管道中,Hops 在转换之间传递数据。

3)Pipeline

管道是实际的数据处理者。管道中的操作读取、修改、丰富、清理和写入数据。管道的编排是通过其他管道和/或工作流来完成的。

从下图可以看到Pipeline包含一些列的TRANSFORM(转换)。
在这里插入图片描述

4)Transform
一个转换(Transform)是管道中执行的一个工作单元。典型的转换操作包括从文件、数据库中读取数据,执行查找或连接操作,丰富、清理数据等。管道中的所有转换都是并行执行的。转换处理数据,并通过 Hops 将处理后的数据批次传递给后续操作进行处理。

5)Workflow
工作流(Workflow)是一系列默认按顺序执行的操作(可选择并行执行)。工作流通常不直接操作数据,而是执行编排任务。工作流中的典型任务包括检索和归档数据、发送电子邮件、错误处理等

在这里插入图片描述

下载安装

github:https://github.com/apache/hop

  1. 打开 Apache Hop 官方下载页面:https://hop.apache.org/download/
  2. Apache Hop 基于 Java 开发,因此我们需要安装 JVM。
  • OpenJDK Java 17 编译器。请务必将您的 JDK 更新到最新的补丁版本。
  • Maven 3.6.3 或更高版本

官方下载地址:https://hop.apache.org/download/,本教程是基于[`apache-hop-client-2.15.0.zip`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.zip.md)进行解压。

1unzip apache-hop-client-2.15.0.zip
2

解压后目录是hop

1cd hop
2

学习示例
Apache Hop 提供了各种开发和运行工具,其中 Hop Gui 就是主要的图形开发工具,点击 hop-gui.bat 或者 hop-gui.sh 启动:

启动成功之后会打开hop-gui的操作界面,如下图所示
在这里插入图片描述

我们首先设置一下界面语言,点击界面左侧的配置视图(⚙),打开“Look & Feel”页面,选择“简体中文”:
在这里插入图片描述
修改配置之后,需要重启 Apache Hop 才能生效。

Apache Hop 自带了大量的学习案例,位于安装目录下的 config\projects\samples 子目录,可以通过“打开”菜单加载:
在这里插入图片描述

使用

“创建新项目/资源” 对话窗口界面
在这里插入图片描述

界面用于在 Hop 开发环境中创建不同类型的项目项(例如 Pipeline、Workflow)

  • Pipeline:在 Hop 中等同于“转换”或“数据流”,用于设计 ETL/ELT 中的数据处理步骤——读取数据、转换、输出。创建 Pipeline 后会进入可视化设计画布,向其中拖放 transform(转换步骤)、连接流向并配置属性。
  • Workflow(有时也称为 Workflow 或 Workflow/Workflow):用于控制流程的执行顺序、作业调度、外部程序调用、条件分支等,常用于编排多个 Pipeline 或其他任务(类似作业/调度流程)。

先配置连接(Database / REST / Cloud auth),这样在创建 Pipeline 时可以直接复用连接。
将常用的 Pipeline/Workflow 模板保存为项目项,便于复用。

如果你的目标是处理数据(Extract/Transform/Load),通常创建 Pipeline;若目标是编排任务或调度多个阶段,创建 Workflow/。

在 Hop GUI 中创建 Pipeline(步骤)

打开 Hop GUI。点击左上角的 “+” 然后选择 Pipeline(或右上工具栏的 Pipeline 图标)。
在画布上:
先创建或选择 ClickHouse 的连接(Metadata → Relational Database Connection / JDBC Connection)。
拖入输入 transform、清洗 transform,再拖入输出 transform,按数据流连接它们。

在这里插入图片描述

主要 transform

  • 通用文件与行输入
    • CSV file input
      用途:从 CSV 文件读取数据;常用于从文件导入 ClickHouse 的中间步骤(如先清洗再写入)
    • Text file input / Text file input (deprecated)
      用途:通用文本文件读取;可按行解析复杂格式。
    • Microsoft Excel input
      用途:读取 Excel (.xls/.xlsx) 文件内容,常见于从业务人员导入数据时。
    • Parquet File Input
      用途:读取 Parquet 格式(列式存储),适合大数据场景和列式分析数据源。
  • 数据生成与测试
    • Generate rows / Generate random value
      用途:用于生成测试数据或占位数据,做 Pipeline 开发/测试时很方便。
    • Fake data
      用途:生成假数据样本,用于功能测试或性能测试。
  • 数据库 / 表输入
    • Table input
      用途:通过数据库连接(JDBC)执行 SQL 查询并读取结果。
    • Get table names
      用途:列出数据库中的表名,便于动态处理或自动化 Pipeline。
    • Get files rows count
      用途:获取文件行数,常用于校验或条件判断。
  • JSON / XML /结构化数据输入
    • JSON input
      用途:解析 JSON 文件或字符串,抽取字段进入流。
    • Get data from XML / XML input stream (StAX)
      用途:解析 XML 或大 XML 流(StAX 适合大文件逐节点处理)。
  • 消息队列 / 流式输入
    • Get messages from Kafka topics (Kafka Consumer)
      用途:从 Kafka 读取流数据,适合实时或近实时 ETL 场景。
  • AWS SQS Reader / Google Sheets Input / Salesforce input
    • 用途:从各类外部服务读取数据(SQS、Google Sheets、Salesforce 等)。
  • 日志 / 监控 / 元数据
    • Pipeline Logging / Pipeline Probe
      用途:记录或探测 Pipeline 的运行数据,用于调试与监控。
  • NoSQL / 专用 DB 输入
    • MongoDB input
      用途:从 MongoDB 读取文档数据。
    • LDAP input / Splunk Input / SAS Input
      用途:从特定系统或格式读取数据。

其它实用输入
- Get file names / Get subfolder names
用途:遍历目录、获取文件路径用于后续 File Input。
- Load file content in memory
用途:将文件整个读入以便于后续处理(小文件场景)。

Apache Hop 的局限

  1. 性能局限:
    Hop 本身是通用 ETL 平台,设计上偏向易用与扩展性,而不是极致的低延迟/高吞吐网络 I/O 优化。
    • 说明:
      对于非常大的数据量、极高并发或严格的延迟 SLA(例如每秒百万行写入),Hop 可能不是最优选;底层连接与序列化往往比原生驱动慢。
    • 场景 :低/中等量批量同步(每天几万到几十万行,容忍秒级到分钟级延迟)

Hop 本身是通用 ETL 平台,设计上偏向易用与扩展性,而不是极致的低延迟/高吞吐网络 I/O 优化。

  1. Apache Hop 对复杂数据类型支持有限
    例如,Apache Hop 对 ClickHouse 的复杂数据类型支持有限,常见的做法是使用通用的 JDBC 插件或通用的数据库连接器来读写 ClickHouse,但这通常只覆盖基本标量类型并且对复杂类型支持有限。

Apache Hop 的外部插件仓库(hop-plugins)

官方文档:https://hop.apache.org/manual/2.10.0/plugins/external-plugins.html

Apache Hop 的外部插件仓库(hop-plugins)中无法或不会随 Apache Hop 一起发布的多类插件,重点涵盖可执行系统日志和消息的动作插件、丰富的数据转换(Transforms)插件(如 Dropbox、Google Sheets、Excel、MQTT、LDIF 等)、针对 Python、机器学习与深度学习的扩展(如 CPython 与 Hop Machine Intelligence/hop-mi)以及用于地理信息处理的 AtolCD 插件集。

一组可以与 Apache Hop 一起使用但不能或不会随 Apache Hop 一起发布的插件: https://github.com/project-hop/hop-plugins/

参考

Pentaho vs Apache Hop:選擇最佳 ETL 工具的關鍵考量
原文链接:https://www.omniwaresoft.com.tw/techcolumn/pentaho-vs-apache-hop/
kettle背景:https://kettle.bleuel.com/2015/02/14/some-historic-cornerstones-of-kettle-pentaho/?utm_source=chatgpt.com
Apache Hop从入门到精通 第二课 Apache Hop 核心概念/术语
原文链接:https://blog.csdn.net/zhangjin1222/article/details/145109711


开源 ETL(Extract,Transform,Load)工具之Apache Hop》 是转载文章,点击查看原文


相关推荐


Subword算法之WordPiece、Unigram与SentencePiece
红纸2812025/10/15

在昨天的内容里,我们已经围绕 Subword 分词体系中最基础的两类算法 ——BPE(字节对编码)与 BBPE(双向字节对编码)展开了详细拆解:从 BPE 的 “训练 - 编码” 核心逻辑切入,用具体案例还原了它如何通过迭代合并高频字节对构建词汇表,也分析了其在控制词汇表规模、处理未登录词上的优势与局限;随后又聚焦 BBPE 与 BPE 的差异,通过预处理、多轮字节对统计与合并的完整实例,清晰呈现了 BBPE 的工作原理,以及它在特定场景下的应用价值。 但 Subword 分词的技术版图远不止


Redis(60) Redis的复制延迟如何优化?
Victor3562025/10/14

在 Redis 的主从复制架构中,复制延迟是一个不可忽视的问题。复制延迟可能会影响数据一致性和系统性能。以下是一些优化 Redis 复制延迟的策略及其实现方法,并结合代码进行详细说明。 复制延迟的原因 网络延迟:主从节点之间的网络延迟是导致复制延迟的主要原因。 主节点性能:主节点的负载过高,处理客户端请求和复制请求的速度减慢。 从节点性能:从节点性能不足,处理来自主节点的复制数据速度慢。 数据量过大:数据量过大,尤其是在初次同步时,会导致复制延迟。 优化策略 1. 优化网络延迟 部署在同一


Jenkins Pipeline post指令详解
00后程序员张2025/10/12

Jenkins Pipeline post指令详解:掌握构建后处理的艺术 引言 在持续集成和持续部署(CI/CD)的实践中,构建过程的稳定性和可靠性至关重要。然而,任何复杂的软件项目都难免会遇到构建失败、测试不通过或环境不稳定的情况。Jenkins Pipeline作为自动化构建的核心工具,提供了强大的post指令来帮助开发者优雅地处理这些各种情况。本文将深入探讨post指令的各个方面,帮助您全面掌握构建后处理的最佳实践。 什么是post指令? 基本概念 post指令是Jenkins Pipe


Python人工智能编程从零开始掌握机器学习基础
jianmin09202025/10/11

Python与机器学习入门概述Python人工智能编程从零开始掌握机器学习基础,是当今技术领域一项极具价值的技能。Python凭借其简洁易读的语法、丰富的库生态系统以及强大的社区支持,成为机器学习入门和实践的首选语言。对于初学者而言,从零开始学习意味着需要系统性地理解机器学习的基本概念、掌握必要的数学基础,并熟练运用Python相关的工具库进行实战练习。这一旅程虽然充满挑战,但通过循序渐进的学习路径,任何人都能建立起坚实的 foundation。搭建Python开发环境开始机器学习之旅的第一步是


关于Mybatis-Plus的insertOrUpdate()方法使用时的问题与解决—数值精度转化问题
superstrer2025/10/9

1 问题描述         今天在使用Mybatis-Plus的insertOrUpdate()方法时,新增能成功,编辑无法成功,报错如下:         我很好奇,明明我前端执行的是编辑逻辑,并不需要phone_number字段,而insertOrUpdate()方法为什么会执行INSERT语句?         而这里的phone_number报错也很好理解,就是因为数据库我设置了该字段NOT NULL,而编辑操作误执行为插入操作,因此并没有设置phone_number字段的值


找 Vue 后台管理系统模板看这个网站就够了!!!
追逐时光者2025/10/8

前言 在开发 Vue 后台管理系统时,一个美观、功能完善且易于扩展的模板能极大提升我们的开发效率。面对琳琅满目的 Vue 开源项目,如何快速找到真正实用、维护良好的模板成为关键。大姚给大家分享一个 Vue 后台管理系统模板大全,里面收录了大量开源的 Vue 后台管理系统模板和 Vue 后台管理系统。 在线访问地址:vue.easydo.work 什么是 Vue? Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提


Spring Boot集群 集成Nginx配置:负载均衡+静态资源分离实战
夜雨hiyeyu.com2025/10/6

Spring Boot 集群集成 Nginx:负载均衡 + 静态资源分离实战指南 第一章:架构概述与设计理念1.1 为什么需要集群化?1.2 整体架构设计 第二章:Spring Boot 应用集群化准备2.1 应用无状态化改造2.2 应用配置标准化 第三章:Nginx 负载均衡配置详解3.1 Nginx 安装与基础配置3.2 高级负载均衡策略 第四章:静态资源分离实战4.1 静态资源配置优化4.2 CDN 集成配置 第五章:高可用与故障转移5.1 Nginx 高可用架构5.2


AI训练的悖论:为什么越追求准确率越会产生幻觉?
MobotStone2025/10/5

在早期时,我曾让大模型撰写一位冷门历史人物的传记。它胸有成竹,娓娓道来:年代、成就,甚至几句“名言”,一应俱全。读起来简直像历史上真的存在一样。 唯一的问题是:大部分内容都不是真的。严格来说,模型并非“撒谎”,而是在知识缺口处用看似合理的细节把空白填满。它是出色的故事编辑者,却是离谱的历史学家。 这种问题在 AI 领域叫做"幻觉"(就像人会产生错觉一样),是目前提升 AI 可靠性路上最难啃的硬骨头之一。我们理想中的 AI 应该像万能百科一样无所不知,但更重要的是,它必须清楚地知道自己"不知道什么


重磅更新!Claude Sonnet 4.5发布,编程最强模型
哪吒编程2025/10/4

9月30日,Anthropic公司发布最新旗舰模型Claude Sonnet 4.5。 官网描述: Claude Sonnet 4.5 是世界上最好的编码模型。它是构建复杂代理的最强大模型。它是使用计算机的最佳模型。它在推理和数学方面表现出显著的进步。 代码无处不在。 它运行着你使用的每个应用程序、电子表格和软件工具。能够使用这些工具并推理解决难题是现代工作得以完成的关键。 一、为何是Claude Sonnet 4.5,而不是Claude Opus 4.5? 1、Claude 系列目前主要有三大


GLM-4.6 + Cursor 实战首秀:国产大模型高效优化现有模块
飞哥数智谈2025/10/3

昨天配置了 GLM-4.6 的环境,今天我们直接在实际项目中深度使用下。 《免费用上 GLM-4.6!我在 Cursor 里接入了模力方舟 - 掘金》 背景与任务 实战场景依然是基于我们的“协同平台”,系统内有一个“项目”模块和“待办”模块。 今天的实战任务就是优化项目查看界面,使用待办模块实现项目下的需求、任务、缺陷管理。 实操记录 环境:Cursor + 模力方舟 GLM-4.6 API。 初版生成 指令 优化项目查看页面。 更改为左右布局,左侧span=16,右侧span=8 左侧:

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0