当我对大文件使用 DataWeave 函数时,Mule 中的流式传输失败

问题描述 投票:0回答:1

我正在使用文件侦听器组件中的

streaming
(可重复文件存储)以及DW脚本下的
deferred=true
读取一个大型excel文件,以将流数据发送到下一个组件。 我正在使用
orderBy
groupBy
,但它因内存问题而失败 文件大小约为 5 GB。

%dw 2.0
output application/json deferred=true
...
(payload orderBy $.fname) groubBy $.mark pluck $

在 DataWeave 中有更好的排序和分组方法吗?

mule dataweave mule4
1个回答
1
投票

这里的主要问题是一些dataweave函数不支持流式传输。在这种情况下,

orderBy
groupBy
都需要全部输入才能完成他们的工作。

您可以使用 @StreamCapable 指令来确保您的 dataweave 代码适用于流式传输,方法是在顶部声明您的

input
,如下所示:

@StreamCapable
input payload application/xlsx

您还需要确保您的文件监听器设置有streaming reader

outputMimeType="application/xlsx; streaming=true"
.

© www.soinside.com 2019 - 2024. All rights reserved.