【问题标题】:How to use Apache Nifi to transfer lots of data (GB) without memory error?如何使用 Apache Nifi 传输大量数据 (GB) 而不会出现内存错误?
【发布时间】:2022-01-05 20:48:48
【问题描述】:

我正在使用 apach NiFi 将 postgres 中的基础传输到 bigquery,但是,有些表很大(29GB),并且我收到了 VM 的内存错误。我可以跳过这个限制吗?我需要在我的桌面升级以支持这种过渡吗?还是存在另一种方式?

错误:java.lang.outofmemoryerror:超出 gc 开销限制

架构:imageSchema

【问题讨论】:

  • 首先 - 您必须提供有关环境的更多信息。计算机上可用的内存,为 nifi 保留的内存(-xmx 参数),哪个处理器出现故障,来自 nifi 日志文件的堆栈跟踪的完整错误消息。
  • 嗨@daggett,感谢您的回答。我开始使用该工具,但我不知道使用 100%,但是,我阅读并发现 VM JAVA 有内存限制。我尝试使用 290 MB 并通过了限制,但使用 130 MB 时它可以工作,因此,虚拟机它必须介于此值之间。我的电脑有 8 GB 内存。我需要使用此工具或其他工具来传递大量数据。
  • 请回答所有问题-也许有人可以帮助您
  • 嗨@dagget!我写了错误并添加了我在 nifi 中的方案。

标签: google-bigquery etl apache-nifi


【解决方案1】:

在对大的PostgreSQL 表执行查询时,您应该将Auto Commit 属性设置为false,因为自动提交设置为true(默认)时驱动程序不支持fetchSize

不幸的是,当前Nifi 版本中的sql executors 没有该属性。

see相关问题

【讨论】:

  • 感谢您的回答!如何在 nifi 的配置中设置这个属性?
  • 这是一个基于处理器的属性。似乎他们刚刚添加了。您可以查看最新版本是否已达到
  • Helo。 @yaprak。我正在使用新版本:1.15.2
  • 它似乎即将发布下一个版本。顺便说一句,它适用于 ExecuteSQL 和 ExecuteSQLRecord。我在您的架构编辑之前发布过。您可能会寻求一些解决方法,例如每次获取特定的 id 范围
  • 嗨!使用获取大小?
猜你喜欢
  • 2020-02-22
  • 1970-01-01
  • 2012-03-26
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多