使用 Machine Learning (ML) with Amazon Athena (Preview) - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Machine Learning (ML) with Amazon Athena (Preview)

Machine Learning (ML) with Amazon Athena (Preview) 让您可以使用 Athena 编写使用 Amazon SageMaker 运行机器学习 (ML) 推理的 SQL 语句。此功能简化了对 ML 模型的访问以进行数据分析,无需使用复杂的编程方法来运行推理。

要使用 ML with Athena (Preview),请用 USING FUNCTION 子句定义一个 ML with Athena (Preview) 函数。该函数指向要使用的 Amazon SageMaker 模型终端节点,并指定要传递给模型的变量名称和数据类型。查询中的后续子句引用该函数以将值传递给模型。模型根据查询传递的值运行推理,然后返回推理结果。有关 Amazon SageMaker 以及 Amazon SageMaker 终端节点工作原理的详细信息,请参阅 Amazon SageMaker 开发人员指南 中的在 Amazon SageMaker 托管服务上部署模型

注意事项和限制

  • AmazonAthenaPreviewFunctionality 工作组 – To use this feature in preview, you must create an Athena workgroup named AmazonAthenaPreviewFunctionality and join that workgroup. For more information, see 管理工作组.

  • Amazon SageMaker 模型终端节点必须接受并返回 text/csv – 有关数据格式的详细信息,请参阅Amazon SageMaker 开发人员指南中的推理通用数据格式

  • Amazon SageMaker 终端节点扩展 – 确保引用的 Amazon SageMaker 模型终端节点已充分扩展,以便 Athena 调用终端节点。有关更多信息,请参阅 Amazon SageMaker 开发人员指南 中的自动扩展 Amazon SageMaker 模型Amazon SageMaker API 参考 中的 CreateEndpointConfig

  • IAM 权限 – 要运行指定 ML with Athena (Preview) 函数的查询,必须允许运行该查询的 IAM 委托人,以便为引用的 Amazon SageMaker 模型终端节点执行 sagemaker:InvokeEndpoint 操作。有关更多信息,请参阅允许访问 ML with Athena (Preview)

  • ML with Athena (Preview) 函数不能直接在 GROUP BY 子句中使用

ML with Athena (Preview) 语法

USING FUNCTION 子句指定可由查询中的后续 SELECT 语句引用的 ML with Athena (Preview) 函数或多个函数。您定义函数名称、变量名称以及变量和返回值的数据类型。

摘要

以下示例说明了指定 ML with Athena (Preview) 函数的 USING FUNCTION 子句。

USING FUNCTION ML_function_name(variable1 data_type[, variable2 data_type][,...]) RETURNS data_type TYPE SAGEMAKER_INVOKE_ENDPOINT WITH (sagemaker_endpoint= 'my_sagemaker_endpoint')[, FUNCTION...][, ...] SELECT [...] ML_function_name(expression) [...]

参数

USING FUNCTION ML_function_name(variable1 data_type[, variable2 data_type][,...])

ML_function_name 定义函数名称,可以在后续查询子句中使用该函数名称。每个 variable data_type 指定一个具有相应数据类型的命名变量,Amazon SageMaker 模型可以接受该变量作为输入。将 data_type 指定为 Amazon SageMaker 模型可以接受作为输入的受支持 Athena 数据类型之一。

RETURNS data_type TYPE

data_type 指定 ML_function_name 作为 Amazon SageMaker 模型的输出返回到查询的 SQL 数据类型。

SAGEMAKER_INVOKE_ENDPOINT WITH (sagemaker_endpoint= 'my_sagemaker_endpoint')

my_sagemaker_endpoint 指定 Amazon SageMaker 模型的终端节点。

SELECT [...] ML_function_name(expression) [...]

将值传递给函数变量和 Amazon SageMaker 模型以返回结果的 SELECT 查询。ML_function_name 指定之前在查询中定义的函数,后跟进行计算以传递值的 expression。传递和返回的值必须与 USING FUNCTION 子句中为函数指定的相应数据类型匹配。

示例

以下示例演示了使用 ML with Athena (Preview) 的查询。

USING FUNCTION predict_customer_registration(age INTEGER) RETURNS DOUBLE TYPE SAGEMAKER_INVOKE_ENDPOINT WITH (sagemaker_endpoint = '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;