根据NiFi

时间:2016-08-12 05:41:59

标签: java apache-nifi

在开发Apache NiFi cusom处理器时,如何向当前流文件添加属性 我想要做的是将新属性(或至少更新当前属性)添加到具有计算值的当前流文件中 或者我可以使用已经构建的处理器吗?

2 个答案:

答案 0 :(得分:6)

NiFi支持多种创建和更新属性的方法,具体取决于您要使用的数据源。一些通用处理器包括:

UpdateAttribute - 使用静态值和NiFi的表达式语言更新流文件的属性。

enter image description here

您可以使用一个处理器添加任意数量的属性。我建议您浏览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;
}