Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将复杂的java对象(嵌套映射和列表)从一个apache nifi处理器传递到另一个?_Java_Apache Nifi - Fatal编程技术网

如何将复杂的java对象(嵌套映射和列表)从一个apache nifi处理器传递到另一个?

如何将复杂的java对象(嵌套映射和列表)从一个apache nifi处理器传递到另一个?,java,apache-nifi,Java,Apache Nifi,我有两个功能要通过自定义nifi处理器实现。第一个的输出被输入到第二个。但是,此输出采用复杂java对象的形式(嵌套哈希映射和列表)。如果要将这两个功能作为单独的处理器来实现,那么如何在两个处理器之间传递这些复杂的java对象呢。我是否必须将它们转换为某种中间形式,比如json或xml,然后从一个处理器传递到另一个处理器(然后在第二个处理器中再次将json/xml转换回嵌套的映射和列表)?还是有其他一些我完全错过的标准/明显的方法 PS:目前,我将两个功能放在同一个处理器中,这样我就不必将第一个

我有两个功能要通过自定义nifi处理器实现。第一个的输出被输入到第二个。但是,此输出采用复杂java对象的形式(嵌套哈希映射和列表)。如果要将这两个功能作为单独的处理器来实现,那么如何在两个处理器之间传递这些复杂的java对象呢。我是否必须将它们转换为某种中间形式,比如json或xml,然后从一个处理器传递到另一个处理器(然后在第二个处理器中再次将json/xml转换回嵌套的映射和列表)?还是有其他一些我完全错过的标准/明显的方法


PS:目前,我将两个功能放在同一个处理器中,这样我就不必将第一个功能的输出传递给另一个

您应该能够序列化数据()并通过流文件传递它。

是的,在考虑这个场景时,会想到对象序列化/反序列化,但这就是人们在这样的上下文中所做的(在nifi处理器之间传递对象)?我必须探索如何将序列化数据写入流文件并再次反序列化它。流文件也能处理序列化的java对象吗?有人有这方面的经验吗?(我相信,这应该是重复出现的场景。)流文件内容是一个字节[],您可以获取InputStream或OutputStream,因此内容可以是您需要的任何内容want@Mahesha999我对NiFi不太熟悉,但据我所知(正如Bryan所说),FlowFile包含byte[]数据,可以轻松处理流。序列化使得将类似结构的类转换为字节[]非常容易,所以我认为这不是一个超级困难的问题。将字节[]转换回序列化类也很简单。我建议您通读我上面链接的系列文档/教程,它将真正帮助您阐明问题。当您说“这就是人们所做的事情”时,我认为大多数处理器都试图遵守基于流的编程原则,因此这些“黑匣子”之间的接口处理器应该是独立的,后续处理器不应该与前置处理器紧密耦合。我认为一个更干净的解决方案是将输出序列化为具有定义模式(JSON或XML)的文本表示,并在后续处理器中接收它,因为这允许许多其他处理器与数据交互。如果结构如此复杂,而这是唯一的用例,序列化Java就可以了。@Andy我尽量避免在大多数情况下转换为文本表示,但我从您描述的更不可知的方法中看到了它的价值。我认为一个更好的方法可能是使用谷歌的,它提供了最好的两个世界。