我在 MySQL 中有一个数据库,它有近 200 万行和 30 列。我的流程是 QueryDatabaseTable -> convertrecord -> PutElasticSearchHttpRecord。我的 QueryDatabaseTable 具有以下配置(请查看屏幕截图):
我的 Jjava.args 值如下:(虽然我将以下两个的值更新为 8 GB,但仍然出现 java 堆空间错误)
java.arg.2=-Xms512m java.arg.3=-Xmx512m
我正在应用select * from Tablename(将导致跨 9 列的 749,748 行)但出现“Java 堆空间错误”。是因为我正在尝试跨 9 列调用 749,748 行吗?
使用 NiFi QueryDatabaseTable 处理器从 MySQL 调用如此庞大的数据集的最佳方式是什么。任何帮助深表感谢。谢谢!
最佳答案
如上述评论所述。
NiFi 默认 JVM
配置是 java.arg.2=-Xms512m java.arg.3=-Xmx512m
这是根本原因针对内存不足问题。
要解决此问题,请增加
$NIFI_HOME/conf/bootstrap.conf
文件中的堆空间
根据您的要求更改配置,如下所示,我已将堆空间增加到 8GB
# JVM memory settings
java.arg.2=-Xms8912m
java.arg.3=-Xmx8912m
为了使这些配置在您的 NiFi 实例中生效,RESTART
整个 NiFi 实例,然后只有 NiFi 实例将使用 配置的堆运行空格
.
有关 JVM 内存不足问题的更多详细信息,请参阅 this链接。
关于mysql - 从 NiFi 中的 QueryDatabaseTable 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419517/