【问题标题】:Get BLOB out of Avro FlowFile从 Avro FlowFile 中获取 BLOB
【发布时间】:2020-08-11 17:23:22
【问题描述】:

我使用 ExecuteSQL 从数据库中检索了一些二进制文件(在本例中为一些 PDF),它以 Avro FlowFile 的形式返回结果。我不知道如何从 Avro 记录中获取二进制结果。

我试过使用 ConvertAvroToJSON,它给了我一个像这样的对象:

{"MYBLOB": {"bytes": "%PDF-1.4\n [...] " }}

但是,使用 EvaluateJSONPath 并抓取 $.MYBLOB.bytes 会导致损坏,因为二进制字节会转换为 UTF8。

使用 ConvertRecord 的记录写入器选项似乎都不适合二进制数据。

我能想到的最佳解决方案是在二进制文件离开数据库之前对其进行 base64 编码,然后我只处理字符数据并可以在 NiFi 中对其进行解码。但这是额外的步骤,我不想这样做。

【问题讨论】:

    标签: encoding apache-nifi avro


    【解决方案1】:

    在这种情况下,您可能需要一个脚本解决方案(作为一种解决方法),以获取该字段并使用您自己的编码对其进行解码。在任何情况下,请随时提交 Jira 案例,ConvertAvroToJSON 已弃用,但我们应该支持 ExecuteSQLRecord/ConvertRecord 中 JsonRecordSetWriter 的字符集(如果这也不适合您)。

    【讨论】:

    • 文档 ConvertAvrotToJSON 中没有任何内容表明它已被弃用。最终,将二进制数据作为字符数据处理可能是行不通的。只有一些二进制序列不是有效字符。而且我无法使用 ConvertRecord 确定脚本选项的正面或反面,并且文档几乎没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多