在 Amazon Athena 中使用机器学习(ML)
将机器学习(ML)与 Amazon Athena 结合使用可让您借助 Athena 编写使用 Amazon SageMaker 运行机器学习(ML)推理的 SQL 语句。此功能简化了对 ML 模型的访问以进行数据分析,无需使用复杂的编程方法来运行推理。
要将机器学习(ML)与 Athena 结合使用,您可以使用 USING EXTERNAL
FUNCTION
子句定义将机器学习(ML)与 Athena 结合的函数。该函数指向要使用的 SageMaker 模型端点,并指定要传递给模型的变量名称和数据类型。查询中的后续子句引用该函数以将值传递给模型。模型根据查询传递的值运行推理,然后返回推理结果。有关 SageMaker 以及 SageMaker 端点工作原理的信息,请参阅 Amazon SageMaker 开发人员指南。
有关将机器学习(ML)与 Athena 和 SageMaker 推理结果结合使用以检测结果集中异常值的示例,请参阅 AWS 大数据博客文章:通过调用 Amazon Athena 机器学习推理函数来检测异常值
注意事项和限制
-
可用区域 – Athena ML 功能在支持 Athena 引擎版本 2 或更高版本的 AWS 区域 中可用。
-
SageMaker 模型端点必须接受并返回
text/csv
– 有关数据格式的更多信息,请参阅《Amazon SageMaker 开发人员指南》中的 用于推理的常见数据格式。 -
Athena 不发送 CSV 标头 - 如果您的 SageMaker 端点是
text/csv
,则您的输入处理程序不应假设输入的第一行是 CSV 标头。由于 Athena 不发送 CSV 标头,因此返回给 Athena 的输出将比 Athena 预期的少一行,从而导致错误。 -
SageMaker 端点扩展 – 确保引用的 SageMaker 模型端点已充分扩展,以便 Athena 调用端点。有关更多信息,请参阅《Amazon SageMaker 开发人员指南》中的 自动扩展 SageMaker 模型 和《Amazon SageMaker API 参考》中的 CreateEndpointConfig。
-
IAM 权限 – 要运行指定机器学习(ML)与 Athena 相结合的函数的查询,必须允许运行该查询的 IAM 委托人,以便为引用的 SageMaker 模型端点执行
sagemaker:InvokeEndpoint
操作。有关更多信息,请参阅 允许使用 Athena 访问机器学习。 -
机器学习与 Athena 相结合的函数不能直接在
GROUP BY
子句中使用
机器学习与 Athena 相结合的语法
USING EXTERNAL FUNCTION
子句指定可由查询中的后续 SELECT
语句引用的机器学习(ML)与 Athena 相结合的函数或多个函数。您定义函数名称、变量名称以及变量和返回值的数据类型。
摘要
下面的语法显示了 USING EXTERNAL FUNCTION
子句,该子句指定了机器学习(ML)与 Athena 相结合的函数。
USING EXTERNAL FUNCTION ml_function_name
(variable1
data_type
[, variable2
data_type
][,...])
RETURNS data_type
SAGEMAKER 'sagemaker_endpoint
'
SELECT ml_function_name
()
参数
- USING EXTERNAL FUNCTION
ml_function_name
(variable1
data_type
[,variable2
data_type
][,...]) -
ml_function_name
定义函数名称,可以在后续查询子句中使用该函数名称。每个variable data_type
指定一个命名变量,且其相应的数据类型应可为 SageMaker 模型接受作为输入。指定的数据类型必须是支持的 Athena 数据类型。 - RETURNS
data_type
-
data_type
指定作为 SageMaker 模型的输出由ml_function_name
返回到查询的 SQL 数据类型。 - SAGEMAKER '
sagemaker_endpoint
' -
sagemaker_endpoint
指定 SageMaker 模型的端点。 - SELECT [...]
ml_function_name
(expression
) [...] -
将值传递给函数变量和 SageMaker 模型以返回结果的 SELECT 查询。
ml_function_name
指定之前在查询中定义的函数,后跟进行计算以传递值的表达式
。传递和返回的值必须与USING EXTERNAL FUNCTION
子句中为函数指定的相应数据类型匹配。
示例
以下示例演示了使用机器学习(ML)与 Athena 结合的查询。
USING EXTERNAL FUNCTION predict_customer_registration(age INTEGER) RETURNS DOUBLE SAGEMAKER 'xgboost-2019-09-20-04-49-29-303' SELECT predict_customer_registration(age) AS probability_of_enrolling, customer_id FROM "sampledb"."ml_test_dataset" WHERE predict_customer_registration(age) < 0.5;
客户使用示例
以下视频使用了机器学习(ML)与 Amazon Athena 相结合函数的预览版,展示了您可以在 Athena 中使用 SageMaker 的方式。
预测客户流失
以下视频展示了如何将 Athena 与 Amazon SageMaker 的机器学习功能相结合,以预测客户流失情况。
检测僵尸网络
以下视频展示了一家公司如何使用 Amazon Athena 和 Amazon SageMaker 来检测僵尸网络。