红移用户定义Lambda函数返回错误



我按照本官方教程中提到的所有步骤创建了一个红移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也能正常工作。

您需要确保返回与输入行匹配的正确数量的输出行。记住,该函数不期望只有一个输入行,而是在"中处理;批次";。

最新更新