Jaspersoft 工作室如何运行直接查询或实时连接到大数据库

Posted

技术标签:

【中文标题】Jaspersoft 工作室如何运行直接查询或实时连接到大数据库【英文标题】:How could Jaspersoft studio run direct query or live connection to Big database 【发布时间】:2016-03-09 17:22:46 【问题描述】:

我正在使用 Jaspersoft studio 6 并处理大型数据库。我的数据在 mysql 中,一张表中有 700 万个文档。

当我使用 Jaspersoft studio 连接到 MySql 时,它将连接到 MySQL,运行查询,例如“从 table1 中选择 a,b”并从 MySql 中提取数据集。但是,这里我的表是 700 万个文档,它会引发 OutOfMemoryError 错误,如下所示:

net.sf.jasperreports.engine.JRException: java.lang.OutOfMemoryError: Java heap space
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:524)
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$20(ReportControler.java:499)
at com.jaspersoft.studio.editor.preview.view.control.ReportControler$5.run(ReportControler.java:380)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.OutOfMemoryError: Java heap space............

JVM 内存好像用完了。

如何在不将数据集导入 Jaspersoft 的情况下直接查询(或建立实时连接)到 MySql 数据库?

从 Jaspersoft 的手册来看,它也可以处理来自 Hadoop 等的大数据。我还没有使用 hadoop,但是如果 Jaspersoft studio 每次都需要导入整个数据集而不是建立实时连接,它如何处理非常大的数据集?比如TB级的数据

【问题讨论】:

【参考方案1】:

您需要在 JSS 中配置一个报表虚拟器,以便在运行大报表时,使用磁盘上的临时文件来存储文档页面,避免占用内存。

在 JSS 中,您需要转到 Preferences/Jaspersoft Studio/Report Execution 并查看用于激活基于文件的虚拟器的复选框。您可以先尝试使用默认配置,看看效果如何。

【讨论】:

以上是关于Jaspersoft 工作室如何运行直接查询或实时连接到大数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Jaspersoft Studio 中,如何使用 DATEFORMAT() 函数?

如何将 Jaspersoft Studio 与 UCanAccess 一起使用?

实时查询停止工作

如何在 Jaspersoft iReport Designer 中对列中的所有值求和?

jaspersoft studio 中怎么给 table 中的parameter 中赋值

四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho