现如今,互联网时代带来了数据量的海量增长,数据驱动业务决策成为大势所趋。分析人员迫切的希望能快速的交互式的从本地海量的数据中抓取有用的信息来辅助决策。
本文中,我们将围绕如何借助亚马逊云上的服务来对本地数据实施ETL处理和查询分析进行详细的探讨。
在亚马逊云上,S3对象存储服务由于其高可用性,高持久性,可扩展性和数据格式兼容性等特点成为建设存储海量数据的首选。通过glue将本地数据提取到S3中,并使用Athena轻松地对S3中的数据进行交互式查询。我们将通过以下四个步骤来构建此应用场景:
步骤四:使用Athena查询S3中的数据
实施前,先来了解一下Amazon Glue和 Athena 吧~
Glue是亚马逊云中一款托管的ETL工具,可简化为分析准备数据的过程。它易于使用,工程师只需在亚马逊云科技的管理控制台中单击几下即可创建并运行ETL作业。它会自动发现您的数据并将相关的元数据存储在Glue数据目录中。完成此操作后,即可立即搜索和查询的数据,也可用于ETL。
Amazon Athena 是一款交互式查询服务,它能够轻松使用标准 SQL 分析 Amazon S3 中的数据。使用Athena进行数据查询只需指向存储在S3中的数据,定义架构并使用标准 SQL 开始查询。使用 Athena,无需执行复杂的 ETL 作业来为数据分析做准备。除此之外,Athena还可与Glue数据目录进行开箱即用的集成。
1.为glue创建一个私有子网,且该子网的路由规则中包含一条路由到nat gateway的规则。
2.为glue创建一个安全组,且入站规则中必须包含一条来源为自身安全组id的规则。
3. 为glue创建一个IAM角色,并为该角色赋予AdministratorAccess的权限。
1. 在glue控制台中,点击左侧导航栏连接,并点击添加连接。
2.编辑自定义连接名称,并在连接类型中选择JDBC,点击下一步。
3.输入JDBC的URL,大多数数据库引擎的JDBC URL语法为jdbc:protocol://host:port/databasenameSQL server语法为 jdbc:sqlserver://host:port;databaseName=db_nameOracle语法为 jdbc:oracle:thin://@host:port/service_name
4.检查配置确认有无疏漏,点击完成。
5.回到glue控制台,选中刚刚新建的glue连接,点击测试连接。
6.选择新创建好的IAM角色,点击测试连接。
7.等待测试结果,待测试成功后可进行下一步。
8.在左侧导航栏的爬网程序中,点击添加爬网程序。
9.在爬网程序名称中输入自定义名称,点击下一步。
10.勾选Data stores和Crawl all folders,点击下一步。
11.在数据存储中选择JDBC, 连接处选择刚刚创建好的JDBC连接,在包含路径中输入源数据库的路径。
12.勾选否,点击下一步。
13.在IAM角色中选择创建好的Glue IAM角色。点击下一步。
14.频率选择按需运行。点击下一步。
15.点击添加数据库。
16.输入自定义数据库名称,点击创建。
17.选择刚刚建好的数据库,点击下一步。
18.检查配置信息有无疏漏,点击完成。
19.回到glue控制台,选中新建完成的爬网程序,点击运行爬网程序。
20.点击表查看爬取到的schema。
1.在左侧导航栏中选中作业,点击添加作业。
2.在名称中输入自定义作业名称,选择glue的IAM角色,在type中选择spark。其他选项保持默认即可。
3.在爬取到的源数据库的schema中选择一个数据源,点击下一步。
4.选择更改架构即可,点击下一步。
5.选中在数据目标中创建表,在数据存储中选择S3,格式选择CSV,目标路径为S3的路径。此配置请根据实际情况进行选择。
6.检查schema的映射,点击下一步。
7.点击运行作业。
8.参数保持默认,点击运行作业。
9.回到glue控制台,选中创建好的作业,历史记录中查看作业运行的状态。
1.回到glue控制台,点击爬网程序并添加爬网程序。在爬网程序名称中输入自定义名称,点击下一步。
2.在数据存储中选择S3,包含路径中选择S3的路径。
3.勾选否,点击下一步。
4.选择现有的IAM角色,点击下一步。
5.频率中选择按需运行即可。
6.选择已创建好的数据库,可选择是否为表添加前缀。
7.检查配置是否有疏漏,点击完成。
8.选中新建好的爬网程序,点击运行爬网程序。
9.待爬网程序运行完成后,到数据表中确认新表是否已生成。
到Athena控制台中查看已生成的可查询数据表。
本文章展示了如何使用 Glue ,Athena,S3 轻松构建数据湖。通过使用 Glue 对本地数据库进行结构爬取和数据抽取并将抽取到的数据存储在S3中,通过Athena即可轻松地对S3中的数据进行SQL查询与分析 。