使用Apache Nifi从第三方Rest APi收集文件 - Flow建议

问题描述 投票:0回答:1

我正在尝试在Apache-Nifi中创建一个流来从第三方RESTful APi收集文件,我已经设置了以下流程:

InvokeHTTP - ExtractText - PutFile

我可以收集我所追踪的文件,因为我在远程URL中指定了这个文件,但是当我从所述文件中获取所有数据时,它会将多个(100个)相同的文件输出到我的输出目录。

我需要帮助的3件事:

1:如何让流以可读的.csv输出文件,而不仅仅是没有ext的文件

2:如果我拥有所需的所有数据,如何停止处理器

3:我提供的Json文件为我提供了从特定日期范围获取文件的选项:

https://api.3rdParty.com/reports/v1/scheduledReports/877800/1553731200000

或者我可以选择一个特定的文件:

https://api.3rdParty.com/reports/v1/scheduledReports/download/877800/201904/CTDDaily/2019-04-02T01:50:00Z.csv

但是如何在Nifi中创建一个命令来自动检查更新的文件,因为这个过程将每天运行,我们将每天都在寻找下载新文件。

如果这太宽泛,请通过让我知道帮助我,以便我可以编辑这篇文章。

谢谢。

注意:已重命名3rdParty主机名以符合安全性 - 因此链接不会直接起作用。谢谢。

json rest apache-nifi put invoke
1个回答
3
投票

1)使用UpdateAttribute处理器将流文件的文件名更改为您想要的任何内容。如果要使其具有“.csv”扩展名,则可以添加名为“filename”的属性,其值为“$ {filename} .csv”(输入时不带引号)。

2)默认情况下,大多数处理器都有定时器驱动程序0秒的调度策略,这意味着尽可能快地运行。转到“计划”选项卡上的处理器配置并配置相应的计划,听起来您可能希望CRON计划每天安排它。

3)您可以使用NiFi表达式语言语句来创建动态时间范围。我不完全理解您必须与之通信的API的语法,但您可以为URL执行以下操作:

https://api.3rdParty.com/reports/v1/scheduledReports/877800/ $ {NOW()}

now()将返回当前时间戳作为纪元。

如有必要,您还可以将其格式化为日期字符串:

$ {现在():格式( 'YYYY-MM-DD')}

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html

© www.soinside.com 2019 - 2024. All rights reserved.