2016-03-15 49 views
0

我有一个不断更新新项目的Json文件。 使用Nifi我想创建一个流从这个Json文件中提取内容,然后创建一个可以是CSV的输出文件,以便我可以在Excel中对它进行一些分析。 我是Nifi的新手,你可以提出一些关于这个事件的流程吗? 任何让我开始的事情都会更有帮助。从Json文件Nifi流式传输

回答

3

有此流程来执行一些操作,我可以提供一些方法来解决每个:

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

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

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

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