如何解决从Avro FlowFile中获取BLOB
我已经使用ExecuteSQL从数据库中检索了一些二进制文件(在这种情况下,是某些PDF),该结果在Avro FlowFile中返回结果。我不知道如何从Avro记录中获取二进制结果。
我尝试使用ConvertAvroToJSON,它给了我一个像这样的对象:
{"MYBLOB": {"bytes": "%PDF-1.4\n [...] " }}
但是,使用EvaluateJSONPath并抓住$.MYBLOB.bytes
会导致损坏,因为二进制字节已转换为UTF8。
ConvertRecord的所有记录编写器选项似乎都不适合二进制数据。
我能想到的最佳解决方案是在二进制文件离开数据库之前对其进行base64编码,然后我仅处理字符数据并可以在NiFi中对其进行解码。但这是额外的步骤,我不想这样做。
解决方法
在这种情况下,您可能需要脚本化的解决方案(作为一种解决方法),以获取字段并使用您自己的编码对其进行解码。无论如何,请随时提交Jira案例,不建议使用ConvertAvroToJSON,但我们应该在ExecuteSQLRecord / ConvertRecord中支持JsonRecordSetWriter的字符集(如果这对您也不起作用)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。