在开发Apache NiFi cusom处理器时,如何向当前流文件添加属性 我想要做的是将新属性(或至少更新当前属性)添加到具有计算值的当前流文件中 或者我可以使用已经构建的处理器吗?
答案 0 :(得分:6)
NiFi支持多种创建和更新属性的方法,具体取决于您要使用的数据源。一些通用处理器包括:
UpdateAttribute - 使用静态值和NiFi的表达式语言更新流文件的属性。
您可以使用一个处理器添加任意数量的属性。我建议您浏览Apache NiFi Expression Language Guide以了解您可以使用它做些什么。
ExtractText - 通过将正则表达式应用于流文件内容来设置属性值。
ExecuteScript - ExecuteScript运行自定义脚本代码,可以根据需要更新属性。
还有更多特定内容格式,例如:
答案 1 :(得分:0)
我有一个用例,需要从Java样式的Properties文件中加载许多属性。可以使用ExtractText完成此操作,但是需要为每个要支持的属性添加一个属性和正则表达式。我认为最好支持文件中的任何属性,而不必为每个属性配置处理器。
我想到的解决方案是使用带有以下脚本的ExecuteGroovyScript
处理器:
def ff=session.get();
if (ff != null) {
def properties = new Properties();
def is = ff.read();
properties.load(is);
is.close();
ff.putAllAttributes(properties);
REL_SUCCESS << ff;
}
此脚本从物理文件而不是从流文件读取属性。
def ff=session.get();
if (ff != null) {
def properties = new Properties();
def propertiesFile = new File('/Users/me/mydata/foo.properties')
propertiesFile.withInputStream {
properties.load(it)
}
ff.putAllAttributes(properties);
REL_SUCCESS << ff;
}