来自Json文件的Nifi流媒体

时间:2016-03-15 10:38:00

标签: json csv apache-nifi

我有一个不断更新新项目的Json文件。 使用Nifi我想创建一个直接从这个Json文件中提取内容的流,然后创建一个可以是CSV的输出文件,这样我就可以用它在Excel中进行一些分析。 我是Nifi的新手,你能为这次活动建议一些流程吗? 让我入门的任何事情都会有所帮助。

1 个答案:

答案 0 :(得分:3)

要为此流程执行许多操作,我可以提供一些解决方法:

  • 检索更新的JSON文件:要连续获取文件(如果已更改),您可以使用连接到FetchFile处理器的ListFile处理器,并将FetchFile属性“Completion Strategy”设置为“None”。这将使JSON文件保留在文件系统上。如果不断重新生成JSON文件,则可以使用“移动”或“删除”作为策略。

  • 提取JSON值(如果在更改时替换文件的内容):如果您要查找的值位于同一位置(即始终使用相同的JSONPath表达式),则可以使用EvaluateJsonPath将值提取到属性中。要将值重新输入内容(用于转换为CSV),可以使用ReplaceText(使用表达式语言)将属性放回内容中。

  • 提取JSON值(如果新项目插入到文档中):如果项目是数组的一部分,则可以使用SplitJson为文档中的每个元素生成流文件。这将涉及更复杂的处理,因为您可能希望忽略您已经看到的元素。您可以使用ReplaceText(参见上文)将某些值放入内容中,然后使用Put / FetchDistributedMapCache来检查数组元素是否已被处理。

  • 输出CSV:对于包含您想要作为CSV字段的属性的每个流文件,您可以使用ReplaceText生成一行CSV。然后,您可以使用MergeContent创建完整的CSV文件。请注意,这将没有标题,您可以使用最终的ReplaceText插入标题行,然后插入传入的内容。然后PutFile会将CSV文件写入磁盘。