Apache NiFi-如何向处理器而非流文件添加/传递属性

时间:2019-01-26 08:39:54

标签: apache-nifi

我的目的

执行sql,并使用我自己的模式将结果(流文件)直接写入文件

请参见解释说明。


解决方案1(使用4个处理器)

  1. ExecuteSql,并且记录具有自动生成的(嵌入的)avro模式。
  2. ConvertRecord:记录读取器仅使用嵌入式avro模式,记录记录器使用我自己的HortonworkSchemaRegistry中的模式,因此使用{{1}来传递属性“ schema.name”和“ schema.version” }。
  3. 有效。

enter image description here

解决方案2(使用UpdateAttribute

可能是这样的:

enter image description here

ExecuteSqlRecord具有记录作家

enter image description here

然后Record Writer使用'schema.name'和'schema.version'属性从HortonworkSchemaRegistry获取avro模式

enter image description here

但是ExecuteSqlRecord不支持用户定义属性

enter image description here


所以

  • 这是使用ExecuteSqlRecord处理器的方式吗?
  • 如何向处理器添加属性?

1 个答案:

答案 0 :(得分:2)

就目前而言,用户无法向 ExecuteSQL* 处理器添加新属性。

以下是您可以尝试的方式

  1. 使用 GenerateFlowFile 处理器

    • schema.name属性添加一些值。

流量:

1.GenerateFlowFile //add schema.name attribute with value.
2.ExecuteSQLRecord
2.PutFile

(或)

  1. 通过 RecordWriter 控制器服务中的hard code schema.name 值。在这种情况下,您不需要GenerateFlowFile处理器。

流量:

1.ExecuteSQLRecord //hardcode schema.name property value
2.PutFile