ForkEnrichment Processor
描述
与 JoinEnrichment 处理器配合使用,此处理器负责添加 JoinEnrichment 处理器执行其功能所需的属性。
标签
属性
该组件没有必填或可选属性。
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
enrichment | 添加适当的属性后,传入 FlowFile 的克隆将被路由到此关系。 | 否 |
original | 添加适当的属性后,传入的 FlowFile 将路由到此关系。 | 否 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
enrichment.group.id | 用于将“原始”FlowFile与“丰富”FlowFile关联起来的组 ID。 |
enrichment.role | 用于丰富的角色。 这要么是原创的,要么是丰富的。 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。
另请参阅
详细说明
ForkEnrichment
简介
ForkEnrichment Processor 设计用于与 JoinEnrichment Processor 配合。两者结合使用,提供了一套强大 的机制:先将数据转换为用于获取富化(enrichment)数据的独立请求负载,获取富化数据,可选地对富化数据 进行转换,最后将原始负载与富化数据合并。
典型数据流
ForkEnrichment Processor 负责接收一个 FlowFile 并产生它的两个副本:一个送往 "original" Relationship,另一个送往 "enrichment" Relationship。每个副本都会被追加一组各自的 Attribute。
"original" FlowFile 被路由到 JoinEnrichment Processor,而 "enrichment" FlowFile 被路由到 另一个方向。这两个 FlowFile 都会带有一个名为 "enrichment.group.id"、取值相同的 Attribute。 JoinEnrichment Processor 随后利用该信息将两个 FlowFile 关联起来。每个 FlowFile 还会被追加 "enrichment.role" Attribute,但取值不同:路由到 "original" 的 FlowFile 的 enrichment.role 为 ORIGINAL,路由到 "enrichment" 的 FlowFile 的 enrichment.role 为 ENRICHMENT。
构成 "enrichment" 路径的 Processor 因用例而异。例如,可以使用 JoltTransformJSON Processor 把原始负载转换成 Web 服务所期望的请求负载,再用 InvokeHTTP Processor 获取与用例相关的富化数据。 该路径上常用的其他 Processor 还包括 QueryRecord、UpdateRecord、ReplaceText、JoltTransformRecord 和 ScriptedTransformRecord。使用上述一个或多个 Processor 对通过 InvokeHTTP 调用得到的 Web 服务 响应进行转换,也是一种常见的用法。
获取到富化数据之后,如果不能把它和原始负载合并起来,这些数据就没什么用处。为此使用 JoinEnrichment Processor,它负责合并来自 "original" FlowFile 和 "enrichment" FlowFile 的记录。
JoinEnrichment Processor 为 "original" FlowFile 和 "enrichment" FlowFile 分别配置独立的 RecordReader。这意味着原始数据和富化数据可以拥有完全不同的 schema,甚至可以使用不同的数据格式。 例如,原始负载可以是 CSV 数据,而富化数据是 JSON 负载。由于使用了 RecordReader,这完全没有问题。 该 Processor 还需要一个 RecordWriter,用于写出富化后的负载(即合并了 "original" 和 "enrichment" 数据的负载)。
关于如何将原始负载与富化数据合并的详细说明,请参阅 JoinEnrichment Processor 文档的 Additional Details。