【问题标题】:How do I create a GZIP bundle in NiFi?如何在 NiFi 中创建 GZIP 包?
【发布时间】:2022-03-01 22:45:36
【问题描述】:

我有数千个文件,我想将它们一起 GZIP 以提高发送它们的效率。我使用了 MergeContent,但它创建的是 zip 文件,而不是 GZIP。另一边的系统只在寻找 GZIP。我可以使用 CompressContent 创建单个 GZIP 文件,但这对于通过网络发送效率不高。我还需要保留单个文件的标题,这就是我想使用 MergeContent 的原因。

我可以将文件作为流文件包写入磁盘,运行脚本,获取结果,然后发送,但我认为我可以在 NiFi 中做到这一点而无需写入磁盘。

有什么建议吗?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    您将压缩与归档混淆了。

    Tar 或 Zip 是将 1 个或多个输入文件归档到单个输出文件的方法。例如。 file1.txt、file2.txt 和 file3.txt 是归档到 files.tar 中的单独文件。当您解压缩档案时,您将恢复所有 3 个文件。存档不一定是压缩的。

    GZIP 是一种压缩方法,目的是减小文件的大小。它需要 1 个输入,对其进行压缩并给出 1 个输出。例如。输入file1.txt 100Kb,压缩后得到file1.txt.gz 3Kb。

    MergeContent 是 merging,因此可以生成 ZIP 和 TAR 等档案。它没有压缩。

    CompressContent 正在压缩,因此它可以生成像 GZIP 这样的压缩文件。它没有合并。

    如果您想将许多文件合并成一个压缩档案,例如tar.gz,那么您可以使用 MergeContent (tar) > CompressContent (gzip)。这将首先将所有输入 FlowFiles 归档到 tar 文件中,然后 GZIP 将 tar 压缩到 tar.gz 中。

    有关压缩与存档的更多详细信息,请参阅此答案:Difference between archiving and compression

    (注意:MergeContent 在使用它创建 ZIP 时有一个可选的压缩标志,因此在一个特定的用例中,它也可以对存档应用一些压缩,但它用于@ 987654326@)

    【讨论】:

    • 感谢您的清晰解释!我想我很困惑,因为我的一位同事非常模糊。我尝试了 MergeContent (使用二进制连接和最大条目数),然后 CompressContent 创建一个 GZIP 文件。这似乎是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多