【问题标题】:Using Apache Nifi to collect files from 3rd party Rest APi - Flow advice使用 Apache Nifi 从 3rd 方 Rest APi 收集文件 - 流程建议
【发布时间】:2019-04-08 11:33:08
【问题描述】:

我正在尝试在 Apache-Nifi 中创建一个流程以从第 3 方 RESTful APi 收集文件,并且我已使用以下内容设置我的流程:

InvokeHTTP - ExtractText - PutFile

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

我需要帮助的三件事:

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 主机名已重命名以符合安全要求 - 因此链接将无法直接工作。谢谢。

【问题讨论】:

  • 你的链接失效了。
  • 链接不起作用,因为我用“3rdParty”替换了第 3 方详细信息

标签: json rest apache-nifi put invoke


【解决方案1】:

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

2) 默认情况下,大多数处理器的调度策略是 timer-driver 0 秒,这意味着尽可能快地保持运行。转到调度选项卡上的处理器配置并配置适当的调度,听起来您可能希望 CRON 调度每天进行调度。

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

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

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

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

${now():format('yyyy-MM-dd')}

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

【讨论】:

  • 非常感谢 - 将按照您上面的说明查看这些位!
猜你喜欢
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
相关资源
最近更新 更多