amazon-web-services - redshift 用户定义的 Lambda 函数返回错误
问题描述
我按照本官方教程中提到的所有步骤创建了一个 redshift lambda 函数。
我可以使用我自己的代码而不是该示例中提供的代码。它按预期工作。
# 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 不像任何其他 python UDF 那样工作,那些已经被 redshift 支持。如何在此查询中使用我的 lambda 函数作为用户定义的函数?
更新:
我的函数是这样编写的,它只有在我创建一个只有 1 行的新表时才会起作用。
# create table todel as select * from mytable limit 1;
然后在新创建的表上运行 UDF,它可以工作:
# select input_number, mycircle(input_number) from todel;
这不是预期的,我的其他 python UDF 按预期正常工作。
解决方案
您需要确保返回与输入行匹配的正确数量的输出行。请记住,该函数不仅仅需要一个输入行,而是“批量”处理。
推荐阅读
- javascript - 动态添加文本时按钮移动,如何解决?
- python - 验证是否存在一行矩阵 M 其值属于树 T
- hibernate - 创建休眠条件以将结果显示为此查询
- excel - 在 Excel 中选择主题颜色 * 不 * 使用 RGB 值?
- python - 我想访问 Gurobi 变量的值
- python - geodjango 保存功能时出现错误的 srid
- angular - 错误消息作为 angular-nativescript 中数组的第一个(不需要的)元素
- c++ - 使用 Eigen 实现 3D 位置的卡尔曼滤波器
- angular - 将 SonarTS 质量配置文件与 tslint.json Angular 项目同步
- java - 带有 FlowLayout 的 JScrollPane