【问题标题】:Apache nifi to append year, month and day timestamp to the merged output fileApache nifi 将年、月和日时间戳附加到合并的输出文件
【发布时间】: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 重命名文件吗?

【问题讨论】:

    标签: apache-nifi cloudera hortonworks-data-platform mapr apache-nifi-registry


    【解决方案1】:

    如果你想POST_DATE属性中解析“年”和“月”,你可以使用formattoDate函数。

    例如:

    -- 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

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 1970-01-01
      • 2021-08-26
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2014-02-23
      相关资源
      最近更新 更多