注意事项和限制
在 Athena 中使用用户定义函数(UDF)时,请考虑以下几点。
-
内置 Athena 函数 – Athena 中的内置函数旨在实现高性能。我们建议尽可能使用内置函数而不是 UDF。有关内置函数的更多信息,请参阅 Amazon Athena 中的函数。
-
仅标量 UDF – Athena 仅支持标量 UDF,它将一次处理一行并返回单个列值。每次调用 Lambda 时,Athena 都会将行批量(可能并行)传递给 UDF。在设计 UDF 和查询时,请注意此处理可能对网络流量产生的潜在影响。
-
UDF 处理函数使用缩写格式– 对于 UDF 函数使用缩写格式(而非完整格式)(例如,使用
package.Class
而非package.Class::method
)。 -
UDF 方法必须为小写– UDF 方法必须为小写字母;不允许使用骆驼大小写。
-
UDF 方法需要参数 - UDF 方法必须至少有一个输入参数。尝试调用未定义输入参数的 UDF 会导致运行时异常。UDF 旨在对数据记录执行函数,但是没有参数的 UDF 不接受任何数据,因此会出现异常。
-
Java 运行时支持 – 目前,Athena UDF 支持用于 Lambda 的 Java 8 和 Java 11 运行时。有关更多信息,请参阅《AWS Lambda 开发人员指南》中的使用 Jav 构建 Lambda 函数。
-
IAM 权限 – 要在 Athena 中创建并运行 UDF 查询语句,则除 Athena 函数之外,还必须允许运行查询的 IAM 委托人执行操作。有关更多信息,请参阅 允许访问 Athena UDF:策略示例。
-
Lambda 配额 – Lambda 配额适用于 UDF。有关更多信息,请参阅《AWS Lambda 开发人员指南》中的 Lambda 配额。
-
行级别筛选 - UDF 不支持 Lake Formation 行级别筛选。
-
视图 – 您不能将视图与 UDF 同时使用。
-
已知问题 – 有关已知问题的最新列表,请参阅 GitHub 的 awslabs/aws-athena-query-federation 部分中的 Limitations and issues
(限制和问题)。