首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建新的FlowFile或重用旧的

创建新的FlowFile或重用旧的
EN

Stack Overflow用户
提问于 2020-05-25 10:27:21
回答 2查看 556关注 0票数 1

我正在编写一个自定义处理器,在其中转换FlowFile的内容。为了这个问题的简单性,它应该只写同样的内容。

代码语言:javascript
复制
public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
  FlowFile flowFile = session.get();
  if (flowFile == null) return;

  session.write(
             flowFile,
             (input, output) -> input.transferTo(output) // Do transfomration here
  );
  session.transfer(REL_SUCCESS, flowFile);
}

如果我是对的,我在那里所做的就是将原始FlowFile的内容替换为-在这种情况下,内容的标识。

现在有一种方法

代码语言:javascript
复制
session.create(flowFile);

它创建了一个新的FlowFile。

这让我思考,无论我是否做错了,写在原来的FlowFile。做这件事很简单,所以感觉很好。但是也许创建一个新的FlowFile会更好呢?

,这两种方式的含义是什么?什么时候选择其中一种是正确的?还是观察到的行为是一样的?

这是一些代码,它创建了一个新的FlowFile,编写了原始FlowFile的内容:

代码语言:javascript
复制
public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
  FlowFile flowFile = session.get();
  if (flowFile == null) return;

  FlowFile newFile = session.create(flowFile);
  session.write(
             newFile,
             output) -> session.read(flowFile).transferTo(output) // Do transfomration here
  );
  session.transfer(REL_SUCCESS, newFile);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-25 11:58:31

这取决于您的需求,但是通常您应该在原始的FlowFile中编写。

如果您使用session.create()创建了一个新的流程文件,一个新的UUID将与您的流文件相关联,这将使您的数据来源变得杂乱无章。

在以下情况下,做出新的flowFile是值得的:

  • 您希望同时保存流文件,原始的和新的。
  • 从外部来源阅读(kafka,hdfs,FS .)
  • 1输入N输出(例如splitRecords处理器)
票数 3
EN

Stack Overflow用户

发布于 2020-05-25 17:49:59

  • session.create() -在存储库中创建一个新的FlowFile,没有任何内容,也没有与父FlowFile的任何链接。
    • 此方法仅适用于从外部系统接收或创建数据时。

  • session.create(parentFlowFile) --在存储库中创建一个新的FlowFile,没有任何内容,但具有与parentFlowFile的父链接。除了UUID之外,新创建的FlowFile将继承父级的所有属性。
    • 当您想要同时输出-原始流文件和新流文件时使用。
    • 或者要从输入创建多个流文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62000497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档