将Nifi属性值拆分为多个属性

时间:2019-01-04 07:41:21

标签: java split attributes apache-nifi

我有一个使用GetFile Processor获得的文件。

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

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

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

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

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

它仍然不起作用。出现“找不到属性”错误

2 个答案:

答案 0 :(得分:2)

要解决此问题,可以利用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)

屏幕截图

enter image description here

enter image description here

enter image description here

答案 1 :(得分:0)

下面的处理器工作正常...

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

以下是所需的配置:

分割属性名称:ATTR1,ATTR2,ATTR3,ATTR4 分割的属性名称:filename \ 分割分隔符(Regex):_