java - 将 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
它仍然不起作用。它与“找不到属性”出错
解决方案
为了解决这个问题,您可以利用ExecuteScript
或ExecuteGroovyScript
处理。下面的脚本可以很好地完成这项工作。虽然它是用 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)
截图
推荐阅读
- linux - Is the sysctl.conf file always structured as /etc/sysctl.conf?
- php - 使用产品 ID 或类别 ID 从 WooCommerce 产品中获取类别名称
- python - 使用 Selenium w/ Python 检索从 angular.js 动态加载的值
- php - 如何在 php 类中正确使用/导入接口?
- c# - Entity Framework Core - 禁用模型缓存,为每个实例调用 onModelCreating() dcontext
- r - 如何用上面单元格的级别替换因子 NA
- flutter - 我怎样才能给字符串翻译?
- php - 如何在 PHP 中使用表单按钮销毁/重置会话
- c - 通过交替第一个和第二个向量的元素创建第三个向量
- json - 将 xml 数据序列化为 json 时忽略命名空间属性