

# 将机器学习（ML）与 Amazon Athena 结合使用
<a name="querying-mlmodel"></a>

通过将机器学习（ML）与 Amazon Athena 结合使用，您可以借助 Athena 编写将使用 Amazon SageMaker AI 运行机器学习（ML）推理的 SQL 语句。此功能简化了对 ML 模型的访问以进行数据分析，无需使用复杂的编程方法来运行推理。

要将机器学习（ML）与 Athena 结合使用，您可以使用 `USING EXTERNAL FUNCTION` 子句定义将机器学习（ML）与 Athena 结合的函数。该函数指向要使用的 SageMaker AI 模型端点，并指定要传递给模型的变量名称和数据类型。查询中的后续子句引用该函数以将值传递给模型。模型根据查询传递的值运行推理，然后返回推理结果。有关 SageMaker AI 以及 SageMaker AI 端点工作原理的信息，请参阅 [Amazon SageMaker AI 开发人员指南](https://docs.amazonaws.cn/sagemaker/latest/dg/)。

有关将 ML 与 Athena 和 SageMaker AI 推理结果结合使用来检测结果集中异常值的示例，请参阅 Amazon 大数据博客文章：[Detecting anomalous values by invoking the Amazon Athena machine learning inference function](https://www.amazonaws.cn/blogs/big-data/detecting-anomalous-values-by-invoking-the-amazon-athena-machine-learning-inference-function/)。

## 注意事项和限制
<a name="considerations-and-limitations"></a>
+ **可用区域** – Athena ML 功能已在支持 Athena 引擎版本 2 的 Amazon Web Services 区域开放。
+ **SageMaker AI 模型端点必须接受并返回 `text/csv`** – 有关数据格式的更多信息，请参阅《Amazon SageMaker 开发人员指南》中的 [Common data formats for inference](https://docs.amazonaws.cn/sagemaker/latest/dg/cdf-inference.html)**。
+ **Athena 不发送 CSV 标头** – 如果您的 SageMaker AI 端点是 `text/csv`，则您的输入处理程序不应假设输入的第一行是 CSV 标头。由于 Athena 不发送 CSV 标头，因此返回给 Athena 的输出将比 Athena 预期的少一行，从而导致错误。
+ **SageMaker AI 端点扩展** – 确保引用的 SageMaker AI 模型端点已充分纵向扩展，以便 Athena 调用该端点。有关更多信息，请参阅《Amazon SageMaker AI 开发人员指南》中的 [Automatically scale SageMaker AI models](https://docs.amazonaws.cn/sagemaker/latest/dg/endpoint-auto-scaling.html)** 和《Amazon SageMaker AI API 参考》中的 [CreateEndpointConfig](https://docs.amazonaws.cn/sagemaker/latest/dg/API_CreateEndpointConfig.html)**。
+ **IAM 权限** – 要运行指定将 ML 与 Athena 相结合的函数的查询，必须允许运行该查询的 IAM 主体为引用的 SageMaker AI 模型端点执行 `sagemaker:InvokeEndpoint` 操作。有关更多信息，请参阅 [允许使用 Athena 访问机器学习](machine-learning-iam-access.md)。
+ **机器学习与 Athena 相结合的函数不能直接在 `GROUP BY` 子句中使用**

**Topics**
+ [注意事项和限制](#considerations-and-limitations)
+ [将机器学习（ML）与 Athena 结合使用的语法](ml-syntax.md)