写点什么

使用 AWS Glue 和 Amazon Athena 实现无服务器的自主型机器学习

  • 2019-10-31
  • 本文字数:2220 字

    阅读完需:约 7 分钟

使用 AWS Glue 和 Amazon Athena 实现无服务器的自主型机器学习

您是否遇到过需要根据某些属性划分数据集的情况?K-means 是用于划分数据的最常见的机器学习算法之一。该算法能够将数据分成不同的组 (称为_集群_)。每个样本都被分配到一个集群,这样,相比分配到其他集群中的样本,分配到同一集群中的样本彼此之间更相似。


在这篇博客文章中,我将介绍使用 AWS Glue 提取位于 Amazon S3 上有关出租车行驶情况的数据集,并使用 K-means 根据行车坐标将数据分成 100 个不同的集群。然后,我会使用 Amazon Athena 查询行驶次数和每个集群的大概区域。最后,我会使用 Amazon Athena 来计算行驶次数最多的四个区域的坐标。使用 AWS Glue 和 Amazon Athena 都可以执行这些任务,无需预置或管理服务器。

解决方案概述

我将使用在以前的博客文章中用过的纽约市出租车数据集:使用 AWS Glue、Amazon Athena 和 Amazon QuickSight 协调、查询和可视化各个提供商的数据。我将使用 2016 年 1 月份包含绿色出租车行驶数据的表。


我将向您展示 AWS Glue 作业脚本,该脚本使用 Spark 机器学习 K-means 集群库,基于坐标划分数据集。该脚本通过加载绿色出租车数据并添加指示每一行被分配到哪个集群的列来执行作业。该脚本采用 parquet 格式将表保存到 Amazon s3 存储桶 (目标文件)。可以使用 Amazon Athena 查询存储桶。


我们来考虑下面这个问题:将出租车行驶数据集平均分配到所有已注册接客地点之间的 100 个不同的组 (集群) 中 (接客地点由


pickup_longitude 和


pickup_latitude 列指定)。为了解决这个问题,AWS Glue 脚本要读取输入表,然后使用 Spark 机器学习库实现 K-means,并将集群数量设为 100。结果采用 parquet 格式存储在 Amazon S3 存储桶中,您可以使用 Amazon Athena 进行查询。

演示

执行 AWS Glue 作业

请遵循以下步骤:


  1. 在 AWS 管理控制台中,转到 AWS Glue 控制台。为 AWS Glue 爬网程序 (在数据目录中创建表定义) 创建要将表写入其中的新数据库。

  2. 创建一个指向以下路径的新爬网程序:

  3. Bash


   s3://serverless-analytics/glue-blog -- 设置为按需运行
复制代码


![](https://d2908q01vomqb2.awsstatic-china.com/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2017/12/04/serverless-unsupervised-ml-2-1.gif)
复制代码


  1. 运行该爬网程序。

  2. 确保爬网程序对包含以下属性的绿色表进行分类。

  3. 将脚本文件 MLkmeans.py 上传到其中一个 S3 存储桶中。

  4. 添加新的 AWS Glue 作业,为该作业选择一个名称和角色,从“您提供的现有脚本”中选择运行作业的选项,再选择已上传脚本的 S3 路径,然后为临时文件选择 S3 路径。选择两次 Next,然后选择 Finish。

  5. 编辑脚本。

  6. 选择作业,然后选择要编辑的选项:

  7. 编辑您要将结果存储到其中的 destination 变量 (下图中的第 17 行)。

  8. 使用以前运行的爬网程序所创建绿表的数据库和表名称编辑 namespacetablename (下图中的第 18 和 19 行)。

  9. 运行 AWS Glue 作业。

  10. 验证是否已在目标路径中创建 parquet 文件。

  11. 创建一个指向目标路径的新爬网程序。

  12. 在目标路径上运行爬网程序,以在 AWS Glue 数据目录中创建指向新转换数据集的新表。

如何使用 Athena 查询结果

在爬网程序完成对 AWS Glue 提取、转换和加载 (ETL) 作业创建的 parquet 数据集的分析后,数据目录中应生成一个具有以下列的表:



预测列由 k-means 算法添加,并包含一个表示分配给每行的集群 ID 的整数。


我们来看一个例子,在 Amazon Athena 中用下面的查询列出所有计算的集群:


SQL


SELECT  count(*) as count,      (max(pickup_latitude) - min(pickup_latitude))*(max(pickup_longitude) - min(pickup_longitude)) as approximate_cluster_area , prediction  FROM RESULTDATABASE.RESULTTABLENAME group by prediction  order by prediction
复制代码


当您将


RESULTDATABASE.RESULTTABLENAME 替换为您的结果表名称和数据库时,查询应类似于以下内容:



结果显示由 count (计数) 列描述的每个地理区域内的出租车接客次数,以及由


approximate_cluster_area 列描述的每个地区覆盖的面积。


我们来看另一个例子,列出活动最多的 10 个集群并计算其中心坐标:


SQL


SELECT count(*) AS count,         avg(pickup_latitude) AS latitute,         avg(pickup_longitude) AS longitude,         predictionFROM RESULTDATABASE.RESULTTABLENAMEGROUP BY  predictionORDER BY  count DESC limit 10
复制代码


当您将 RESULTDATABASE.RESULTTABLENAME 替换为您的结果表名称和数据库时,查询应类似于以下内容:



结果将显示行驶次数最多的 10 个集群。如果我们使用 Amazon Quicksight 地理空间可视化功能在地图上绘制这些坐标,会得到一个类似于下图的图像:


总结

在这篇博客文章中,您学到了如何利用 AWS Glue 和 Amazon Athena 来使用自主型机器学习算法,而无需启动或管理服务器。在示例中,我们基于行车坐标将一个出租车行驶数据集分成 100 个不同的组。使用每个组的区域和行驶次数等查询数据,可以计算出坐标。


本博客中介绍的解决方案还可以用于其他数据集,只需稍加修改。您可以使用这些解决方案解决您自己的使用案例需求。我期待收到您的反馈意见和建议。



补充阅读

了解如何通过 AWS 构建基于 PMML 的应用程序并生成预测





作者介绍


**



Luis Caro 是 AWS 专业服务的大数据顾问。**他与我们的客户合作,为大数据项目提供指导和技术支持,帮助他们提高使用 AWS 实现的解决方案价值。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/serverless-unsupervised-machine-learning-with-aws-glue-and-amazon-athena/


2019-10-31 08:00836

评论

发布
暂无评论
发现更多内容

云智赋能,绘就农业强国新图景!

天翼云开发者社区

智慧农业 数字孪生 农业数字化

深度探讨操作系统运维、软件选型等社区标准,龙蜥标准化 SIG MeetUp 圆满举办

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥sig 标准化 SIG 龙蜥meetup

CAD如何放大图纸

极客天地

CommunityOverCode Asia 2025议题征集倒计时,DataOps 分论坛等你发声

白鲸开源

域名有哪些状态?不同的域名状态分别代表什么意思?

国科云

欢迎 Apache SeaTunnel 新晋 Committer 王超

白鲸开源

[方法讨论]手机号码批量导入手机通讯录,导入苹果iphone通讯录华为手机小米手机等安卓手机

一码平川

技术干货推荐:高效解决性能瓶颈与抖动之进程热点追踪

OpenAnolis小助手

操作系统 SysOM 操作系统控制台

深入研究:微店商品详情API接口详解

tbapi

微店商品详情接口 微店API 微店数据采集

重大升级| SecGPT V2.0:打造真正“懂安全”的大模型

云起无垠

数字先锋|文化传承新引擎:班智达科研项目云端腾飞!

天翼云开发者社区

云服务 教育数字化

在BeeWorks中,网盘和即时通讯如何互相集成?

BeeWorks

即时通讯 IM 企业级应用

广告营销行业使用堡垒机的场景简单聊聊

行云管家

网络安全 信息安全

行业热点丨为什么AI驱动工程对汽车设计和轻量化至关重要?

Altair RapidMiner

人工智能 AI 汽车 数字孪生 CAE

2025 全球分布式云大会演讲实录 | 沈建发:智启边缘,畅想未来:边缘计算新场景落地与 Al 趋势新畅想

火山引擎边缘云

人工智能 边缘计算 AI 大底座 边缘智能

人工智能与网络安全:AI如何预防、检测和应对网络攻击?

天津汇柏科技有限公司

人工智能 网络安全 AI 人工智能

超实用!用FunctionCall实现快递AI助手

王磊

Anolis OS 8.10 发布:软硬协同优化,满足多行业实际应用需求

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥操作系统 Anolis OS

CAD怎么根据浮动范围选择圆

极客天地

重构智能设备管理范式:火山引擎端智能解决方案上新,多重 AI 服务即刻享用!

火山引擎开发者社区

抖音电商如何用扣子 Coze 打造 AI 客服?

火山引擎开发者社区

内部聊天软件,BeeWorks-安全的企业内部通讯软件

BeeWorks

即时通讯 IM 私有化部署 局域网视频软件

出版社题库管理系统的测试

北京木奇移动技术有限公司

软件外包公司 出版社 题库系统开发

AI阅读眼动就翻页,领权益解锁HUAWEI Pura X内容新体验

最新动态

25年IT信息安全靠谱保障办法看这里!

行云管家

网络安全 信息安全 IT安全

本周六,龙蜥社区邀您共赴第三届 eBPF 开发者大会

OpenAnolis小助手

操作系统 龙蜥社区 eBPF开发者大会

基于TiDB的应用多活架构

陈一之

TiDB 多活容灾 应用多活

ArkUI-X 5.0.4 Release:跨平台开发的全新体验

坚果

鸿蒙 HarmonyOS 坚果派

出版社题库管理系统的技术架构

北京木奇移动技术有限公司

软件外包公司 出版社 题库管理系统

巴塞罗那对阵塞尔塔:一场事关竞逐西甲联赛冠军与冲击欧战资格的较量

新消费日报

龙蜥邀您参加 2025 全国大学生计算机系统能力大赛操作系统设计赛

OpenAnolis小助手

操作系统 开源大赛

使用 AWS Glue 和 Amazon Athena 实现无服务器的自主型机器学习_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章