NiFi 1.20.0中ExecuteSQL输出格式异常及Avro格式配置问题
解决NiFi 1.20.0 ExecuteSQL队列内容无法以Avro格式查看的问题
问题原因
NiFi 1.20.0中,ExecuteSQL处理器默认不再直接输出Avro二进制数据,而是依赖RecordSetWriter控制器服务定义输出格式。若未正确配置该服务,输出内容会被标记为application/octet-stream,导致无法在队列中格式化查看。
解决方案步骤
- 创建并配置AvroRecordSetWriter控制器服务
- 进入NiFi UI的「控制器设置」页面,切换到「控制器服务」标签
- 点击「+」添加新服务,选择
AvroRecordSetWriter类型 - 启用服务后配置核心参数:
- 将
Schema Write Strategy设置为Embed Schema(嵌入Schema更便于后续内容查看)或Set Schema Name - 其余参数保持默认即可
- 将
- 关联ExecuteSQL与RecordSetWriter
- 打开ExecuteSQL处理器配置页,切换到「设置」标签
- 在「Record Writer」下拉菜单中选择刚创建的
AvroRecordSetWriter服务 - 保存配置并重启ExecuteSQL处理器
- 验证效果
- 触发ExecuteSQL执行后,查看队列数据流项,内容类型应显示为
avro/binary或application/avro - 点击「View Content」即可正常格式化查看Avro内容
- 触发ExecuteSQL执行后,查看队列数据流项,内容类型应显示为
额外说明
- 若需保留原有Avro输出行为,确保
AvroRecordSetWriter的Schema Access Strategy配置正确,避免因Schema缺失导致输出异常 - 队列中已有的
application/octet-stream类型数据需清理后,重新生成新数据才能生效
内容的提问来源于stack exchange,提问作者Sampath Sam
相关产品推荐
相关产品推荐

