2012-12-06 124 views
3

我有一个远程驱动器(如\远程\位置)的大量(超过200k)的pdf文件。我必须从该目录中读取所有文件名并将文件名插入到数据库中。Pentaho数据集成“获取文件名”不加载大的文件列表

我试过“获取文件名”的一步。但是它不会加载文件名,并且转换立即停止。
我试过用较少数量的记录在同一个远程目录中,但在一个子目录中。它工作正常。
但是,当我尝试所有文件(包括子目录)它崩溃。出现内存不足的情况。 (Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space))

有没有一种方法可以处理每个1000个文件一次?

回答

2

您用完了内存。编辑spoon.sh文件并搜索这一行。

PENTAHO_DI_JAVA_OPTIONS="-Xmx512m -XX:MaxPermSize=512m"

,如果你有一个可用,您可以设置2GB 4GB内存,(这是由你)。

PENTAHO_DI_JAVA_OPTIONS="-Xmx2048m -XX:MaxPermSize=1024m"

重新启动你的勺子,然后再试一次。

+0

什么都大小我给它超过1024米然后它给我的不能够创建虚拟机的错误,所以我能为此做什么? –

+0

buy more RAM; D – jipipayo

+0

mine是8 GB ... –

0

水壶非常饥饿。例如,我通常需要8 GB才能对250,000条记录的文件运行一个相对较长和复杂的过程。所以在我运行厨房或平底锅之前,我总是将JAVAMAXMEM设置得适当高。您可以设置它以MB为单位,因此对于4 GB您设定了

JAVAMAXMEM=4096 kitchen.sh ... 
+0

这不是确切的内存问题。有大量的文件。如果我不得不增加内存,那么我需要放100GB。所以,我想运行一个循环(一次有1000个文件)。请在这里建议我... – vissu

+0

在这种情况下,我所做的是将我的水壶作业封装在一个shell脚本中,该作业将单个文件名作为参数传递给作业,然后从参数中的文件名中加载文件。那么我可以迭代shell脚本中的文件来一次处理一个文件(或者如果你愿意的话,一次处理多个文件)。 –

相关问题