c#抓取网页数据(AmazonS3数据存储和分析方法,可解决海量异构数据难题 )
优采云 发布时间: 2022-04-15 06:05c#抓取网页数据(AmazonS3数据存储和分析方法,可解决海量异构数据难题
)
数据湖是一种越来越流行的数据存储和分析方法,可解决处理大量异构数据的挑战。数据湖允许组织将所有结构化和非结构化数据存储在一个集中的存储库中。由于数据可以按原样存储,因此无需将其转换为预定义的数据结构(与传统的关系数据仓库不同)。
许多组织都了解将 Amazon S3 用作数据湖的好处。例如,Amazon S3 是一种高度耐用、经济高效的对象存储服务,它支持开放数据格式,同时将存储与计算解耦,并且可以与所有 AWS 分析服务集成。尽管 Amazon S3 为您的数据湖提供了基础,但您也可以根据您的业务需求添加其他 AWS 服务来自定义您的数据湖。有关在 AWS 上构建数据湖的更多信息,请参阅什么是数据湖?
由于使用数据湖的主要挑战之一是查找数据并了解其结构和格式,因此亚马逊最近推出了 AWS Glue。AWS Glue 通过发现数据的结构和格式,显着减少了从 Amazon S3 数据湖快速获取业务洞察所需的时间和精力。AWS Glue 自动爬取 Amazon S3 上的数据,识别数据格式,然后建议可与其他 AWS 分析服务一起使用的数据表结构。
这篇博文将引导您完成使用 AWS Glue 在 Amazon S3 上结构化地抓取数据的过程,构建可供其他 AWS 产品使用的元数据存储。
AWS Glue 的功能
AWS Glue 是一种完全托管的数据目录和 ETL(提取、转换和加载)服务,可简化和自动化数据发现、转换和作业调度等困难且耗时的任务。AWS Glue 使用可识别常见数据格式和数据类型(包括 CSV、Apache Parquet、JSON 等)的预构建分类器来爬取数据源并构建数据目录。
由于 AWS Glue 与现代数据架构的核心组件 Amazon S3、Amazon RDS、Amazon Athena、Amazon Redshift 和 Amazon Redshift Spectrum 集成,因此可以提供无缝的一站式服务来协调移动和管理你的数据。
AWS Glue 数据目录与 Apache Hive Metastore 兼容,并支持 Hive、Presto、Apache Spark 和 Apache Pig 等常用工具。它还直接与 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 集成。
此外,AWS Glue 数据目录具有以下扩展功能,可提供开箱即用的数据管理功能体验:
- 通过搜索发现数据
- 使用分类识别和解析文件
- 使用版本控制管理不断变化的架构
有关更多信息,请参阅 AWS Glue 产品详细信息。
Amazon S3 数据湖
AWS Glue 是 Amazon S3 数据湖不可分割的一部分,为现代数据分析提供数据目录和转换服务。
在上图中,数据针对不同的分析场景进行了分段。最初,数据以其原创格式被摄取,这是数据的不可变副本。然后对数据进行转换和丰富,使其对每个用例都更有价值。在此示例中,原创 CSV 文件被转换为 Apache Parquet 格式以供 Amazon Athena 使用,以提高性能并降低成本。
我们还可以通过将数据与其他数据集相结合来丰富和提供更多见解。AWS Glue 爬网程序根据作业触发器或预定义的计划为数据的每个转换暂存阶段创建一个表。在此示例中,每次将新文件添加到原创数据 S3 存储桶时,都会触发 AWS Lambda 函数进行 ETL 处理。Amazon Athena、Amazon Redshift Spectrum 和 Amazon EMR 等服务可以在任何阶段使用这些表通过标准 SQL 或 Apache Hive 查询数据。这种架构是一种流行的设计模式,它提供敏捷的商业智能,可以快速轻松地从各种数据中获取商业价值。
在此演示中,您将定义一个数据库,配置一个爬虫以浏览 Amazon S3 存储桶中的数据,创建一个表,将 CSV 文件转换为 Parquet,为 Parquet 数据创建一个表,并使用 Amazon Athena 查询数据。
数据发现
登录 AWS 管理控制台并打开 AWS Glue 控制台。您可以在 Analytics 类别中找到 AWS Glue 服务。在构建此解决方案之前,请查看 AWS 区域列表以了解 Glue 的可用位置。
数据发现的第一步是添加一个数据库(database)。数据库是表的集合。
1、 在控制台中,选择添加数据库。在数据库名称中,键入 nycitytaxi,然后选择创建。
2、 在导航窗格中选择表 ( table )。表由列名、数据类型定义和有关数据集的其他元数据组成。
3、 您可以手动或使用爬虫将表添加到数据库 nycitytaxi。爬虫是连接到数据存储并使用分类器的优先级列表来确定数据结构的程序。AWS Glue 为常见文件类型(例如 CSV、JSON、Avro 等)提供分类器。您还可以使用 Grok 模式编写自己的分类器。
4、 要添加爬网程序,请输入数据源:名为 s3://aws-bigdata-blog/artifacts/glue-data-lake/data/ 的 Amazon S3 存储桶。此 S3 存储桶收录一个数据文件,其中收录 2017 年 1 月的所有绿色*敏*感*词*行程。
5、 选择下一步。
6、 对于 IAM 角色,在下拉列表中选择默认角色 AWSGlueServiceRoleDefault。
7、 对于频率,选择按需运行。爬虫可以按需运行或设置为按计划运行。
8、 对于数据库,选择 nycitytaxi。了解 AWS Glue 如何处理对数据结构的更改非常重要,这样您就可以选择适当的方法。在此示例中,表结构将随着数据的任何更改而更新。有关架构更改的更多信息,请参阅 AWS Glue 开发人员指南中的使用爬虫编目表。
9、 查看这些步骤,然后选择完成。爬虫已准备好运行。选择立即运行。
爬虫完成后,会添加一个表。
10、 在左侧导航窗格中选择表格,然后选择数据。此屏幕描述了表,包括表结构(模式)、属性和其他有价值的信息。
将数据从 CSV 格式转换为 Parquet 格式
您现在可以配置和运行作业以将数据从 CSV 转换为 Parquet。Parquet 是一种柱状格式,非常适合 Amazon Athena 和 Amazon Redshift Spectrum 等 AWS 分析服务。
1、 在左侧导航窗格中的 ETL 下,选择作业,然后选择添加作业。
2、 对于名称,键入 nytaxi-csv-parquet。
3、 对于 IAM 角色,
请选择 AWSGlueServiceRoleDefault。
4、 对于此作业运行,选择 AWS Glue 生成的建议脚本。(由 AWS Glue 生成的建议脚本)
5、 提供唯一的 Amazon S3 路径来存储脚本。
6、 为临时目录提供唯一的 Amazon S3 目录。
7、 选择下一步。
8、 选择数据作为数据源。
9、选择在数据目标中创建一个表。
10、 选择 Parquet 作为格式。
11、 选择一个新位置(没有任何现有对象的新前缀位置)来存储结果。
12、 验证表结构映射关系,选择Done。
13、 查看此作业。此屏幕提供作业的完整视图,并允许您编辑、保存和运行作业。AWS Glue 创建了这个脚本。但是,如果需要,您可以创建自己的自定义脚本。
14、选择保存,然后运行作业。
添加 Parquet 表和爬虫
作业完成后,使用爬虫为 Parquet 数据添加新表。
1、 对于采集器名称,键入 nytaxiparquet。
2、 选择 S3 作为数据存储。
3、 包括在 ETL 中选择的 Amazon S3 路径
4、 对于 IAM 角色,选择 AWSGlueServiceRoleDefault。
5、 对于数据库,选择 nycitytaxi。
6、对于频率,选择按需运行。
爬虫完成后,nycitytaxi 数据库中有两张表:一张用于原创 CSV 数据,一张用于转换后的 Parquet 数据。
使用 Amazon Athena 分析数据
Amazon Athena 是一种交互式查询服务,可以使用标准 SQL 轻松分析 Amazon S3 中的数据。Athena 可以查询 CSV 数据。但是 Parquet 的文件格式可以大大减少查询数据的时间和成本。有关更多信息,请参阅博客文章使用 Amazon Athena 分析 Amazon S3 中的数据。
要将 AWS Glue 与 Amazon Athena 结合使用,您必须将 Athena 元数据目录升级到 AWS Glue 数据目录。有关升级 Athena 元数据目录的更多信息,请参阅分步指南。
1、 打开 Athena 的 AWS 管理控制台。查询编辑器将在 nycitytaxi 中显示两个表
您可以使用标准 SQL 查询数据。
1、 选择 nytaxigreenparquet
2、 Type Select * From "nycitytaxi"."data" limit 10;
3、 选择运行查询。
使用 AWS Glue 和 Amazon S3 为数据湖奠定基础,详情如下: