【问题标题】:Split Nifi Attribute Value To Multiple Attributes将 Nifi 属性值拆分为多个属性
【发布时间】:2019-01-04 07:41:21
【问题描述】:

我有一个使用 GetFile 处理器获取的文件。

由此生成的流文件有一个属性(文件名)。

我想用“_”将这个值为“ABC_gh_1245_ty.csv”的“文件名”属性拆分为多个属性

ATTR1 = "ABC"
ATTR2 = "gh"
ATTR3 = "1245"
ATTR4 = "ty.csv"

我认为在 nifi 1.7.1 中没有可用于此功能的处理器

我用谷歌搜索并找到了这个自定义处理器: https://github.com/guvencenanguvenal/nifi-splitcreateattribute

还是不行。它出现“找不到属性”的错误

【问题讨论】:

    标签: java split attributes apache-nifi


    【解决方案1】:

    要解决此问题,您可以利用 ExecuteScriptExecuteGroovyScript 处理器。下面的脚本可以很好地完成这项工作。不过它是用 Groovy 编写的。

    flowFile = session.get()
    
    if (!flowFile)
        return
    
    filename = flowFile.getAttribute('filename')
    splits = filename.split('_')
    attrsMap = [:]
    
    splits.eachWithIndex {
        split, index -> attrsMap.put("ATTR" + index, split)
    }
    
    attrsMap.each{ k, v -> println "${k}:${v}" }
    flowFile = session.putAllAttributes(flowFile, attrsMap)
    session.transfer(flowFile, REL_SUCCESS)
    

    截图

    【讨论】:

      【解决方案2】:

      下面的处理器工作得很好......

      https://github.com/guvencenanguvenal/nifi-splitcreateattribute

      下面是需要的配置:

      拆分属性名称:ATTR1、ATTR2、ATTR3、ATTR4 拆分的属性名称:文件名\ 拆分分隔符(正则表达式):_

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-24
        • 2011-02-20
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多