应该组合哪些处理器来处理 NiFi 中的大型 JSON 文件?
What processors should be combined to process large JSON files in NiFi?
我想设置一个 NiFi 工作流,用于提取大型 JSON 文档(介于 500 MB 和 3 GB 之间),这些文档已从 FTP 服务器 gzip 压缩,拆分 JSON 对象转换成单独的流文件,最后将每个 JSON 对象转换为 SQL 并将其插入到 MySQL 数据库中。
我是 运行 NiFi 1.6.0,在 Oracle Java 8 上,Java 设置了 1024 MB 堆 space。
我目前的流量是:
GetFTP -> CompressContent -> SplitJson -> EvaluateJsonPath -> AttributesToJson -> ConvertJSONToSQL -> PutSQL
此流程非常适合 JSON 较小的文档。一旦大于 400 MB 的文件进入 SplitJson 处理器,它就会抛出 Java OutOfMemory
错误。我可以对现有流程进行哪些更改以使其能够处理大型 JSON 文档?
通常您会希望避免将每个文档拆分为一个流文件。如果您可以将多个文档放在一个流文件中,您将获得更好的性能。你会想看看 NiFi 的记录处理能力,具体你会想看看 PutDatabaseRecord。
下面是对记录处理方法的一个很好的介绍:
https://www.slideshare.net/BryanBende/apache-nifi-record-processing
如果您绝对必须执行拆分为每个流文件的单个记录,那么您至少应该执行一个两阶段拆分,其中第一个拆分处理器拆分为每个流文件可能 10k-20k,然后是第二个拆分处理器将每个流文件拆分为 1 个。
我想设置一个 NiFi 工作流,用于提取大型 JSON 文档(介于 500 MB 和 3 GB 之间),这些文档已从 FTP 服务器 gzip 压缩,拆分 JSON 对象转换成单独的流文件,最后将每个 JSON 对象转换为 SQL 并将其插入到 MySQL 数据库中。
我是 运行 NiFi 1.6.0,在 Oracle Java 8 上,Java 设置了 1024 MB 堆 space。
我目前的流量是:
GetFTP -> CompressContent -> SplitJson -> EvaluateJsonPath -> AttributesToJson -> ConvertJSONToSQL -> PutSQL
此流程非常适合 JSON 较小的文档。一旦大于 400 MB 的文件进入 SplitJson 处理器,它就会抛出 Java OutOfMemory
错误。我可以对现有流程进行哪些更改以使其能够处理大型 JSON 文档?
通常您会希望避免将每个文档拆分为一个流文件。如果您可以将多个文档放在一个流文件中,您将获得更好的性能。你会想看看 NiFi 的记录处理能力,具体你会想看看 PutDatabaseRecord。
下面是对记录处理方法的一个很好的介绍: https://www.slideshare.net/BryanBende/apache-nifi-record-processing
如果您绝对必须执行拆分为每个流文件的单个记录,那么您至少应该执行一个两阶段拆分,其中第一个拆分处理器拆分为每个流文件可能 10k-20k,然后是第二个拆分处理器将每个流文件拆分为 1 个。