redshift 用户定义的 Lambda 函数返回错误
Posted
技术标签:
【中文标题】redshift 用户定义的 Lambda 函数返回错误【英文标题】:redshift User Defined Lambda Function returns error 【发布时间】:2020-10-28 10:24:46 【问题描述】:我按照本官方教程中提到的所有步骤创建了一个红移 lambda 函数。
https://aws.amazon.com/blogs/big-data/accessing-external-components-using-amazon-redshift-lambda-udfs/
我可以使用我自己的代码代替该示例中提供的代码。 它按预期工作。
# select 123456 as input_number, mycircle('123456');
input_number | mycircle
--------------+--------------------
123456 | Mumbai
(1 row)
但是在这样的表格中使用时,相同的功能不起作用......
# select input_number, mycircle(input_number) from mytable limit 1;
ERROR: Invalid Lambda Response
DETAIL:
-----------------------------------------------
error: Invalid Lambda Response
code: 8001
context: Missing rows in lambda response
query: 2983079
location: exfunc_data.cpp:288
process: query0_121_2983079 [pid=29202]
-----------------------------------------------
似乎 UDF 不像其他任何已被 redshift 支持的 python UDF 那样工作。 如何在此查询中使用我的 lambda 函数作为用户定义函数?
更新:
我的函数是这样编写的,它只有在我创建一个只有 1 行的新表时才能工作。
# create table todel as select * from mytable limit 1;
然后在新创建的表上运行 UDF,它就可以工作了:
# select input_number, mycircle(input_number) from todel;
这不是预期的,我的其他 python UDF 按预期正常工作。
【问题讨论】:
【参考方案1】:您需要确保返回与输入行匹配的正确数量的输出行。请记住,该函数不希望只有一个输入行,而是“批量”处理。
【讨论】:
以上是关于redshift 用户定义的 Lambda 函数返回错误的主要内容,如果未能解决你的问题,请参考以下文章
Lambda 函数无法连接到 Redshift:名称解析暂时失败
从没有 VPC 的 Lambda 连接到公共 Redshift 数据库
如何将redshift jdbc驱动程序添加到aws lambda函数