gpt4 book ai didi

JavaScript 内存不足错误 : UDF thread memory limit exceeded-Snowflake

转载 作者:行者123 更新时间:2023-11-28 03:16:43 33 4
gpt4 key购买 nike

我正在尝试使用 javascript UDF 合并两个变体行。但是,我的每个变体行都有大约 12500 个键。我的udf定义如下:

CREATE OR REPLACE FUNCTION merge_json(EXT_ROW VARIANT, STG_ROW VARIANT)
RETURNS variant
LANGUAGE JAVASCRIPT
AS
$$
function extend(ext, stg) {
if(ext == null)ext=stg
for (var key in stg) {
if (stg.hasOwnProperty(key)) ext[key] = stg[key];
}
return ext;
}
return extend(EXT_ROW, STG_ROW)
$$;

从 Snowflake 文档中,我了解到如果脚本使用过多内存或陷入无限循环,那么 udf 就会失败。因此,我尝试删除上述函数中的循环,并将其设置如下:

 CREATE OR REPLACE FUNCTION merge_json_v1(EXT_ROW VARIANT, STG_ROW
VARIANT)
RETURNS variant
LANGUAGE JAVASCRIPT
AS
$$
function extend(ext, stg) {
if(ext == null)ext=stg
let merged_row = Object.assign(ext, stg);
return merged_row;
}
return extend(EXT_ROW, STG_ROW)
$$;

仍然函数抛出错误。有人可以帮我解决这个问题吗?

最佳答案

用 OBJECT 替换 VARIANT 并消除内部包装函数可能会消除一些开销。

例如:

CREATE OR REPLACE FUNCTION merge_json_v1(EXT_ROW OBJECT, STG_ROW OBJECT)
RETURNS OBJECT
LANGUAGE JAVASCRIPT
AS
$$
return EXT_ROW ? Object.assign(EXT_ROW, STG_ROW) : STG_ROW
$$;

如果做不到这一点,您可以增加仓库大小。另请检查查询配置文件,以防其他原因导致问题。

关于JavaScript 内存不足错误 : UDF thread memory limit exceeded-Snowflake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59576027/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com