Apache nifi 将年、月和日时间戳附加到合并的输出文件
Apache nifi to append year, month and day timestamp to the merged output file
我正在创建端到端流程,通过对通过 Tealium 事件流接收的 Json 文件使用 Consume Kafka,将数据消耗到 HDFS 中。目前,我使用了 Consume Kafka -> Evaluate Json Path -> Jolttransform Json -> Merge Content -> Evaluate Json Path -> Update attribute -> PutHDFS
要求是读取Json一整天的数据,并参考属性postdate(将epoch隐藏到之前的YYYYMMDDSS时间戳)合并到一个文件中,每天读取数据合并到一个文件中,最后重命名根据与 POST_DATE 字段相关的时间戳来区分日常文件。除了根据源属性时间戳字段重命名合并文件的时间戳之外,我已经完成了所有部分。你能帮我根据属性重命名文件吗_year_month_day?
如果你想从POST_DATE
属性中解析"year"和"month",你可以使用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}
。
@gogocatmario,感谢您的回复。
问题已解决 post 在 update_attribute 上为文件名 属性 添加以下值。
tealium_es_${post_date:toDate("yyyy-MM-dd HH:mm:ss"):format("yyyy_MM_dd")}.json1
我正在创建端到端流程,通过对通过 Tealium 事件流接收的 Json 文件使用 Consume Kafka,将数据消耗到 HDFS 中。目前,我使用了 Consume Kafka -> Evaluate Json Path -> Jolttransform Json -> Merge Content -> Evaluate Json Path -> Update attribute -> PutHDFS
要求是读取Json一整天的数据,并参考属性postdate(将epoch隐藏到之前的YYYYMMDDSS时间戳)合并到一个文件中,每天读取数据合并到一个文件中,最后重命名根据与 POST_DATE 字段相关的时间戳来区分日常文件。除了根据源属性时间戳字段重命名合并文件的时间戳之外,我已经完成了所有部分。你能帮我根据属性重命名文件吗_year_month_day?
如果你想从POST_DATE
属性中解析"year"和"month",你可以使用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}
。
@gogocatmario,感谢您的回复。 问题已解决 post 在 update_attribute 上为文件名 属性 添加以下值。 tealium_es_${post_date:toDate("yyyy-MM-dd HH:mm:ss"):format("yyyy_MM_dd")}.json1