1、apache hop核心概念思维导图
虽然apache hop是kettle的一个分支,但是它的概念和kettle还是有一些区别的,下图是我根据官方文档梳理的appache hop的核心概念思维导图。
2、Tools(工具)
1)Hop Conf
Hop Conf 是一个命令行工具,用于管理您 Hop 配置的各个方面:项目、环境、云配置等。
具体的文件为hop-conf.sh或者hop-conf.bat,可以通过./hop-conf.sh -help 命令查看具体的参数,这里先不做介绍。
2)Hop Encrypt
Hop Encrypt 是一个命令行工具,用于对明文密码进行混淆或加密,以便在 XML、密码或元数据文件中使用。请确保也将密码加密前缀复制,以指示密码的混淆性质。这样,Hop 就能够区分常规的明文密码和混淆后的密码。
具体的文件为hop-encrypt.sh或者hop-encrypt.bat,可以通过./hop-encrypt.sh -help 命令查看具体的参数,这里先不做介绍。
3) Hop Gui
Hop Gui 是一个可视化 IDE,Hop 数据开发者可以在其中创建、测试、运行和管理工作流和管道的生命周期。除了开发和生命周期管理功能外,Hop Gui 还包含用于管理项目和环境的工具和视角,用于搜索和管理元数据的工具和视角,用于管理和版本控制各种文件的工具和视角,以及用于在 Neo4j 图形中探索日志的工具和视角。
4)Hop Run
Hop Run 是一个命令行工具,用于运行工作流和管道,并提供选项以(列出或)指定项目、环境、属性和运行配置。
具体的文件为hop-run.sh或者hop-run.bat,可以通过./hop-run.sh -help 命令查看具体的参数,这里先不做介绍。 5)Hop Search
Hop Search 是一个命令行工具,用于搜索特定项目或环境中的所有元数据。
具体的文件为hop-search.sh或者hop-search.bat,可以通过./hop-search.sh -help 命令查看具体的参数,这里先不做介绍。
6)Hop Server
Hop Server 是一个用于管理和运行工作流和管道的 Web 服务接口。其本质就是一个jetty web 容器。
2、Item types(条目类型)
1)Action
一个动作(Action)是工作流中执行的一个操作。默认情况下,动作按顺序执行,但也可以配置为并行执行。动作返回一个真(true)或假(false)的退出代码,该代码可以在工作流的执行中使用(或忽略)。
2)Hop(连线/跳)
在 Hop 中,Hops 将工作流中的动作(Actions)或管道中的转换(Transforms)连接起来。
在工作流中,Hops 根据前一个动作的退出状态进行操作;
在管道中,Hops 在转换之间传递数据。
3)Pipeline
管道是实际的数据处理者。管道中的操作读取、修改、丰富、清理和写入数据。管道的编排是通过其他管道和/或工作流来完成的。
从下图可以看到Pipeline包含一些列的TRANSFORM(转换),这些转换是并行执行的。途中的连线即Hop。
4)Transform
一个转换(Transform)是管道中执行的一个工作单元。典型的转换操作包括从文件、数据库中读取数据,执行查找或连接操作,丰富、清理数据等。管道中的所有转换都是并行执行的。转换处理数据,并通过 Hops 将处理后的数据批次传递给后续操作进行处理。
5)Workflow
工作流(Workflow)是一系列默认按顺序执行的操作(可选择并行执行)。工作流通常不直接操作数据,而是执行编排任务。工作流中的典型任务包括检索和归档数据、发送电子邮件、错误处理等。
3、Projects and Environments(项目和环境)
1)Project (项目)
Hop 项目是一种概念性的配置、变量、元数据对象以及工作流和管道的分组。项目可以从父项目继承元数据。一个项目包含一个或多个环境,实际的配置在这些环境中定义。
例如:“销售”项目包含一个“客户”数据库连接和多个工作流和管道。运行时配置、数据库连接属性等在“开发”(dev)、“用户接受测试”(uat)和“生产”(prd)环境中定义。
2)Environment(环境)
Hop 环境是项目的实例,包含项目的实际运行时配置和其他元数据对象。和我们开发springboot应用是类似的,开发时一些参数配置在dev环境文件进行设置,生产环境参数在prod环境文件进行设置。
例如:“销售”项目的“dev”环境指定从主机“10.0.0.1”读取“客户”数据库连接的数据。
下面展示了dev、stage、prod三个环境,hop运行时可以指定任一环境参数配置。
4、Metadata(元数据)
Hop 元数据是共享元数据(如关系数据库连接、运行配置、服务器、Git 仓库等)的中央存储库。元数据以 JSON 格式持久化,默认存储在项目的基本文件夹中。
5、Lazy Loading(延迟加载/懒加载)
如果启用,所有数据转换(字符解码、数据转换、修剪等)将在尽可能晚的时候进行,实际上是将数据作为二进制字段读取。启用延迟转换可以显著降低读取数据的 CPU 成本。
何时避免使用:如果在流的后续阶段仍然需要执行数据转换,延迟转换可能会降低速度而不是加快处理。
何时使用:在以下情况下可以使用延迟转换来加快处理速度:1)数据被读取并写入另一个文件而不进行转换,2)数据需要排序并且不适合内存。在这种情况下,延迟转换的序列化到磁盘速度更快,因为编码和类型转换被推迟了,或者 3)批量加载到数据库而不需要数据转换。批量加载工具通常直接读取文本,生成文本的速度更快(这不适用于表输出)。