我正在使用文件侦听器组件中的
streaming
(可重复文件存储)以及DW脚本下的deferred=true
读取一个大型excel文件,以将流数据发送到下一个组件。
我正在使用 orderBy
和 groupBy
,但它因内存问题而失败
文件大小约为 5 GB。
%dw 2.0
output application/json deferred=true
...
(payload orderBy $.fname) groubBy $.mark pluck $
在 DataWeave 中有更好的排序和分组方法吗?
这里的主要问题是一些dataweave函数不支持流式传输。在这种情况下,
orderBy
和 groupBy
都需要全部输入才能完成他们的工作。
您可以使用 @StreamCapable 指令来确保您的 dataweave 代码适用于流式传输,方法是在顶部声明您的
input
,如下所示:
@StreamCapable
input payload application/xlsx
您还需要确保您的文件监听器设置有streaming reader
outputMimeType="application/xlsx; streaming=true"
.