mergecontent处理器未提供预期结果

时间:2018-09-05 15:19:22

标签: apache-nifi

我在多个小文件中包含json数据(有时一个文件中只有一行,或者一个空文件中)。

我想将所有小文件合并为一个大文件。

我正在以意外的格式获取大文件。

例如:

文件1:

{"code"="1", "color"="green"}
{"code"="2", "color"="blue"}
{"code"="3", "color"="orange"}

文件2:

{"code"="4", "color"="yellow"}
{"code"="5", "color"="red"}

使用 MergeContent

后,我得到以下输出
{"code"="1", "color"="green"}
{"code"="2", "color"="blue"}
{"code"="3", "color"="orange"}{"code"="4", "color"="yellow"}
{"code"="5", "color"="red"}

预期输出

{"code"="1", "color"="green"}
{"code"="2", "color"="blue"}
{"code"="3", "color"="orange"}
{"code"="4", "color"="yellow"}
{"code"="5", "color"="red"}

感谢任何帮助 谢谢

1 个答案:

答案 0 :(得分:2)

这可能是因为file-1在最后一行之后没有换行符。 bin-packing合并实际上是逐个写入每个流文件的原始字节,而不涉及字节中的内容,因此第二个文件的字节紧随第一个文件的字节之后。

Header,Demarcator和Footer的属性将相应地插入到字节周围。因此,使用“文本”的“分隔符策略”并在“分界符”值中输入shift + enter会告诉它在每批字节之间输入换行符。

请记住,如果某些文件确实以换行结尾,那么使用这种方法有时会连续出现两个换行。您可能会在使用RouteText之后将其过滤掉,或者尝试在使用ReplaceText之前对其进行清理。