Webmethods(软件AG Designer 9.12):解析巨大的平面文件

时间:2019-07-25 03:14:33

标签: stream webmethods

我们无法解析大型平面文件。 (大小为80-100MB)

-我们正在通过getFile获取文件。我们能够将文件作为流 -我们尝试使用streamToByes选项,但收到一条错误消息JavaHeapSpace。我们已经最大化了堆空间,并且仍然保持不变。 -我们目前正在做的是getFile> convertToValues就是这样。

请问您如何建议?我们的计划是:

我想解析这个以“;”分隔的大平面文件。然后将其标记化。但是,使用string:tokenize不能接受Stream文件。

2 个答案:

答案 0 :(得分:1)

WM的文档对此进行了讨论:

  

默认情况下,Integration Server以相同的方式处理所有平面文件,无论   他们的大小。 Integration Server接收平面文件,并将文件内容保留在内存中   在处理过程中。但是,如果您收到大文件,Integration Server可能会遇到   使用这些文件时出现问题,因为系统没有足够的空间   用于保存整个已解析文件的内存。   如果您处理的部分或全部平面文件由于内存而出现问题   约束,您可以将pub.flatFile:convertToValues服务中的iterator变量设置为true ,以处理平面文件中的顶级记录(文档根目录的子级)   一次纲要。解析了顶层记录的所有子记录之后,pub.flatFile:convertToValues服务返回,并且迭代器移至架构中下一个记录的顶层,直到解析了所有记录。应该在流服务中使用REPEAT步骤来完成此解析,其中,每次pub.flatFile:convertToValues服务返回时,都将映射结果并将结果从管道中删除以节省内存。如果将结果保留在管道中,则可能会发生内存不足错误。   pub.flatFile:converToValues服务生成一个输出对象(ffIterator变量),该对象封装并跟踪处理过程中的输入记录。当所有输入   数据已解析,此对象为null。当ffIterator变量为null时,您   应该使用EXIT步骤退出REPEAT步骤并终止处理。

答案 1 :(得分:0)

是的,我将使用带有schema / dictionnary的convert to value或带有bufferdReader的java服务。 您是否需要文件的所有内容,或者可以对这些批处理行执行处理?因为100 MB的CSV可能会导致内存问题

iterate over file