我正在尝试在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主机名以符合安全性 - 因此链接不会直接起作用。谢谢。
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