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

标签 java split attributes apache-nifi

我有一个使用 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

还是不行。错误提示“找不到属性”

最佳答案

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

关于java - 将 Nifi 属性值拆分为多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54034846/

相关文章:

java - 如何初始化字符串数组的默认构造函数?

java - Sybase 类 com.sybase.jdbc3.jdbc.SybDriver 的 MSSQL 驱动程序等效项是什么?

r - 何时使用训练验证测试集

c# - 从属性的 getter 调用方法

python - 无法在 "object"类的实例上设置属性

javascript - JS 中逻辑运算符的字符串比较

java - 这是在服务中每 x 秒重复一次方法的正确方法吗?

java - 从 WatchEvent 中确定已删除文件的类型

c - 在最后一次指定出现 "special"符号 + C 时分割字符串

java - 如何用 "\\"分割字符串