【问题标题】:Dynamic parameter for GetFile/ListFile processor - NiFiGetFile/ListFile 处理器的动态参数 - NiFi
【发布时间】:2017-10-05 01:15:26
【问题描述】:

我的工作流程如下。

ListenHTTP(我在这里得到一个目录名) --> SplitText --> ExtractText(作为属性添加的目录名)

在此之后,我将不得不使用该属性 directoryname 并提取该本地目录中的所有文件并将其放入 HDFS。我知道 GetFile/ListFile 可以做到这一点,但我们如何为该处理器提供动态目录名称?

【问题讨论】:

  • 投反对票的原因?

标签: hdfs apache-nifi


【解决方案1】:

不幸的是,GetFileListFile 都是 source 处理器,这意味着它们不接受传入的流文件。一般模式是使用静态 Input Directory 值配置这些处理器,并允许它们从中读取并管理它们的状态。

在这种情况下,我相信您需要使用FetchFile,它接受传入的流文件并读取提供的文件路径。默认情况下,File to Fetch 属性设置为${absolute.path}/${filename},这意味着它使用Apache NiFi Expression Language 来解析传入流文件中这两个属性 的值。您可以先将该流文件传递给ExecuteStreamCommand 处理器并在目录上执行ls,然后将结果拆分为每行一个文件名的单独流文件,并通过FetchFile 处理每个流文件。

我知道这不是执行任务的最简洁方式。另外两个建议是:

  1. Open a Jira 请求一个处理器检索目录中的所有文件(在收到传入流文件时)并需要传入流文件来确定目录。
  2. 使用ExecuteScript 处理器。处理器将简单地从传入流文件中提取属性并使用 Groovy/Ruby/Python/etc。工具从目录中检索文件,或执行目录列表并将单个流文件下游传递到FetchFile 处理器。

【讨论】:

  • 谢谢安迪,我必须尽快创建工作流程。我会尝试选项 2 并发布我的反馈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多