Apache nifi 将年、月和日时间戳附加到合并的输出文件
Posted
技术标签:
【中文标题】Apache nifi 将年、月和日时间戳附加到合并的输出文件【英文标题】:Apache nifi to append year, month and day timestamp to the merged output file 【发布时间】:2019-10-07 13:21:06 【问题描述】:我正在创建端到端流,通过对通过 tealium 事件流接收的 Json 文件使用 Consume Kafka 来将数据消费到 HDFS 中。目前,我已经使用了 Consume Kafka -> Evaluate Json Path -> Jolttransform Json -> Merge Content -> Evaluate Json Path -> Update attribute -> PutHDFS
要求是将全天假脱机的 Json 数据读取到单个文件中,引用属性 postdate(之前的隐蔽纪元到 YYYYMMDDSS 时间戳)并每天读取数据以合并到单个文件中,最后根据时间戳相关重命名文件到 POST_DATE 字段以区分每日文件。除了根据源属性时间戳字段重命名合并文件的时间戳之外,我已经完成了所有部分。您能帮我如何根据属性 _year_month_day 重命名文件吗?
【问题讨论】:
【参考方案1】:如果你想从POST_DATE
属性中解析“年”和“月”,你可以使用format
和toDate
函数。
例如:
-- year
format(toDate($POST_DATE, "YYYYMMDDSS"),"yyyy")
-- month
format(toDate($POST_DATE, "YYYYMMDDSS"),"MM")
--day
format(toDate($POST_DATE, "YYYYMMDDSS"),"dd")
我不确定重命名文件的含义,如果是指在放入HDFS之前更改文件名,您可以简单地使用UpdateAttribute
处理器然后更新属性包含输出文件名,如$year_$month_$day
。
【讨论】:
感谢您的帮助。我需要根据从 post_date 属性读取的年、月、日重命名输出合并文件。我已经合并了所有的日常文件,并在 HDFS 中创建了年月子文件夹。我在更新属性处理器中添加了文件名以具有键和值。目前,合并的文件名是从当前日期格式而不是从属性创建的,但我需要帮助来引用属性日期。正在创建的当前文件名是 tealium_es_$now():format("yyyy_MM_dd").jsonl。【参考方案2】:@gogocatmario,感谢您的回复。 为 update_attribute 上的文件名属性添加以下值后已解决问题。 tealium_es_$post_date:toDate("yyyy-MM-dd HH:mm:ss"):format("yyyy_MM_dd").json1
【讨论】:
以上是关于Apache nifi 将年、月和日时间戳附加到合并的输出文件的主要内容,如果未能解决你的问题,请参考以下文章