apache-nifi - 在 Apache Nifi 中将 TimeLine 添加到文件时出错

标签 apache-nifi

我正在使用 HDP 2.5。我尝试为位于 HDFS 文件中的文件添加时间。为此,我使用 GetHDFS->UpdateAttribute->PutHDFS。

首先,我通过 GetHDFS 处理器从 HDFS 获取文件,然后通过添加属性更改 UpdateAttribute 中的文件格式“

${filename}.${now():format("yyyy-MM-dd-HH:mm:ss.SSS'z'")}"。最后我将文件放入 HDFS。在这个阶段我有一个问题例如,如果目标文件夹(在 HDFS 中)包含已经有时间线的文件。一旦我在结果中运行流程,同一文件会出现两个或多个时间线

已包含时间线的文件

enter image description here

Nifi文件流后包含两个时间线

enter image description here

谁能告诉我如何解决这个问题

最佳答案

如果您不想更改当前的工作流程,最好的选择可能是使用 GetHDFS 处理器中的“文件过滤器”属性来仅获取文件名中不包含日期的文件(假设您的文件有一些命名约定)。另一种选择是将重命名的文件发送到另一个目录中。

作为一般性评论,我建议使用 ListHDFS 和 FetchHDFS 处理器的组合,因为在使用 NiFi 集群时它是一种更有效的模式。然后,您可以在中间使用 RouteOnAttribute 进行一些比“文件过滤器”选项更高级的过滤。

另一条评论:您的方法不是性能最高的方法,因为您是从 HDFS 下载数据,然后将其上传回来。 HDFS 中的重命名/移动操作可能会更干净(或者首先具有正确的命名)。您可以使用 WebHDFS 接口(interface)在 NiFi 中使用 InvokeHTTP 处理器结合 ListHDFS 处理器执行重命名。

关于apache-nifi - 在 Apache Nifi 中将 TimeLine 添加到文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659290/

相关文章:

apache-nifi - 在 NiFi 中将列添加到管道分隔文件的末尾

apache-nifi - Apache NIFi MergeContent处理器-将分界器设置为新行

apache-nifi - 如何在NiFi中使用计数器的值

elasticsearch - NiFi putelasticsearch5错误-内容​​类型丢失

apache-nifi - 修改带有时间戳的流文件

json - Jolt 变换使用 NiFi 将 json 内容放入字段中

regex - 在映射文件中对多列使用 ReplaceTextWithMapping

docker - NiFi集群Docker负载均衡配置

json - 使用 Nifi 将 JSON 拆分为两个单独的 JSON 对象

apache-nifi - ExecuteSQL 和 ExecuteSQLRecord 的区别