没有合适的资源?快使用搜索试试~ 我知道了~
数据集成工具:AWS Glue:AWSGlue与AmazonS3集成.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 86 浏览量
2024-09-02
20:08:56
上传
评论
收藏 34KB DOCX 举报
温馨提示
数据集成工具:AWS Glue:AWSGlue与AmazonS3集成.docx
资源推荐
资源详情
资源评论
1
数据集成工具:AWS Glue:AWSGlue 与 AmazonS3 集成
1 数据集成工具:AWS Glue
1.1 AWS Glue 的功能与优势
AWS Glue 是一项完全托管的服务,用于轻松准备和加载数据以进行分析。
它提供了以下主要功能和优势:
� 数据目录:AWS Glue 数据目录是一个集中式元数据存储库,用于
存储数据表的定义和模式,这些数据表可以来自各种数据存储,如
Amazon S3、Amazon RDS、Amazon Redshift 等。
� ETL 作业:AWS Glue 支持创建、运行和监控 ETL (Extract,
Transform, Load) 作业,这些作业可以使用 Python 或 Scala 编写,并利用
Apache Spark 进行数据处理。
� 数据发现和转换:AWS Glue 提供了数据发现工具,帮助用户理解
数据结构,并提供可视化界面进行数据转换,无需编写代码。
� 机器学习集成:AWS Glue 支持与 AWS SageMaker 集成,可以将数
据转换为机器学习模型所需的格式。
� 成本效益:AWS Glue 采用按需付费模式,无需预先购买或管理服
务器,降低了数据集成的成本。
1.2 AWS Glue 的工作原理
AWS Glue 的工作流程主要包括以下几个步骤:
1. 数据发现:使用 AWS Glue 的爬虫 (Crawler) 来扫描数据存储,如
Amazon S3,以发现数据并自动推断其模式。
2. 元数据存储:爬虫将数据的元数据存储在 AWS Glue 数据目录中,
包括数据表的定义、模式和位置。
3. 数据转换:使用 AWS Glue ETL 作业对数据进行转换,如清洗、聚
合或格式转换,以满足分析或机器学习的需求。
4. 数据加载:将转换后的数据加载到目标数据存储,如 Amazon
Redshift 或 Amazon S3。
5. 数据查询和分析:通过 AWS Glue 数据目录,可以使用 Amazon
Athena 或其他 BI 工具查询和分析数据。
1.2.1 示例:使用 AWS Glue 与 Amazon S3 进行数据集成
假设我们有一个存储在 Amazon S3 中的 CSV 文件,我们想要将其转换为
Parquet 格式并加载到另一个 S3 存储桶中,以便进行更高效的数据分析。
2
1.2.1.1 步骤 1: 创建爬虫
首先,我们需要创建一个爬虫来扫描 S3 存储桶中的数据,并将其元数据存
储在 AWS Glue 数据目录中。
#
使用
boto3
创建
AWS Glue
爬虫
import boto3
client = boto3.client('glue', region_name='us-west-2')
response = client.create_crawler(
Name='my-crawler',
Role='service-role/AWSGlueServiceRole-MyGlueRole',
DatabaseName='my-database',
Targets={
'S3Targets': [
{
'Path': 's3://my-source-bucket/data/',
'Exclusions': [
's3://my-source-bucket/data/backup/*',
]
},
]
},
SchemaChangePolicy={
'UpdateBehavior': 'UPDATE_IN_DATABASE',
'DeleteBehavior': 'LOG'
}
)
1.2.1.2 步骤 2: 运行爬虫
创建爬虫后,我们需要运行它以扫描 S3 中的数据。
#
运行
AWS Glue
爬虫
response = client.start_crawler(
Name='my-crawler'
)
1.2.1.3 步骤 3: 创建 ETL 作业
接下来,我们创建一个 ETL 作业,该作业将从 S3 中读取 CSV 数据,转换为
Parquet 格式,并加载到另一个 S3 存储桶中。
#
使用
boto3
创建
AWS Glue ETL
作业
response = client.create_job(
3
Name='my-etl-job',
Role='service-role/AWSGlueServiceRole-MyGlueRole',
ExecutionProperty={
'MaxConcurrentRuns': 1
},
Command={
'Name': 'glueetl',
'ScriptLocation': 's3://my-bucket/glue-scripts/my-etl-job.py',
'PythonVersion': '3'
},
DefaultArguments={
'--job-language': 'python',
'--job-bookmark-option': 'job-bookmark-enable',
'--TempDir': 's3://my-bucket/temp/'
},
GlueVersion='3.0',
NumberOfWorkers=10,
WorkerType='Standard'
)
1.2.1.4 步骤 4: 编写 ETL 作业脚本
在 S3 中的指定位置,我们需要编写一个 ETL 作业脚本,该脚本使用 Apache
Spark 进行数据转换。
# AWS Glue ETL
作业脚本
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
#
读取
CSV
数据
datasource0 = glueContext.create_dynamic_frame.from_catalog(
database="my-database",
table_name="my_table",
transformation_ctx="datasource0"
)
4
#
转换数据为
Parquet
格式
applymapping1 = ApplyMapping.apply(
frame=datasource0,
mappings=[
("column1", "string", "column1", "string"),
("column2", "int", "column2", "int"),
#
更多列映射
...
],
transformation_ctx="applymapping1"
)
#
将转换后的数据加载到
S3
datasink2 = glueContext.write_dynamic_frame.from_options(
frame=applymapping1,
connection_type="s3",
format="parquet",
connection_options={
"path": "s3://my-target-bucket/parquet-data/",
"partitionKeys": []
},
transformation_ctx="datasink2"
)
job.commit()
1.2.1.5 步骤 5: 运行 ETL 作业
最后,我们运行 ETL 作业以执行数据转换和加载。
#
运行
AWS Glue ETL
作业
response = client.start_job_run(
JobName='my-etl-job'
)
通过以上步骤,我们成功地使用 AWS Glue 将 Amazon S3 中的 CSV 数据转换
为 Parquet 格式,并加载到另一个 S3 存储桶中,为后续的数据分析和机器学习
提供了优化的数据格式。
以上示例展示了如何使用 AWS Glue 与 Amazon S3 进行数据集成的基本流程。
通过 AWS Glue 的爬虫、数据目录和 ETL 作业,可以自动化数据发现、转换和加
载过程,大大简化了数据集成的复杂性。
5
2 数据集成工具:AWS Glue 与 Amazon S3 集成
2.1 AmazonS3 简介
2.1.1 AmazonS3 的存储特性
Amazon Simple Storage Service (S3) 是 Amazon Web Services (AWS) 提供的一
种对象存储服务,用于在互联网上存储和检索任意数量的数据。S3 提供了高持
久性、高可用性、低成本的存储解决方案,适用于各种数据类型和使用场景,
包括备份、归档、数据分析、内容分发等。
� 高持久性与高可用性:S3 设计为提供 99.999999999% 的数据持久
性,并且在多个可用区(Availability Zones)之间自动复制数据,确保即
使在单个数据中心发生故障时,数据仍然可用。
� 可扩展性:S3 可以存储无限数量的对象,每个对象的大小可以从
0 字节到 5TB。这种可扩展性使得 S3 成为处理大量数据的理想选择。
� 安全性:S3 提供了多种安全功能,包括服务器端加密、访问控制
策略、以及与 AWS Identity and Access Management (IAM) 的集成,确保
数据的安全和隐私。
� 成本效益:S3 提供了多种存储类,包括标准、智能分层、标准-不
频繁访问 (Standard-IA)、一区-不频繁访问 (One Zone-IA) 和深存档 (Glacier
Deep Archive),用户可以根据数据的访问频率和存储需求选择最合适的
存储类,以降低成本。
2.1.2 AmazonS3 的数据访问方式
Amazon S3 提供了多种数据访问方式,包括 REST API、AWS SDKs、AWS CLI、
AWS Management Console 等,使得开发者和企业可以轻松地与 S3 进行交互。
� REST API:S3 的 REST API 允许用户通过 HTTP 请求直接与 S3 交互,
执行诸如上传、下载、删除对象等操作。这是 S3 最基本的访问方式,适
用于任何可以发起 HTTP 请求的编程环境。
� AWS SDKs:AWS 提供了多种语言的 SDK,如 Java、Python、.NET、
Ruby、PHP 等,这些 SDK 封装了 S3 的 REST API,提供了更高级、更易于
使用的接口,简化了与 S3 的交互过程。
� AWS CLI:AWS Command Line Interface (CLI) 是一个统一的工具,
可以执行所有 AWS 服务的命令。通过 AWS CLI,用户可以使用命令行工
具管理 S3 存储桶和对象,执行数据迁移、备份等任务。
� AWS Management Console:对于那些更习惯于图形界面的用户,
AWS Management Console 提供了一个直观的界面,用于管理 S3 存储桶
和对象,以及设置访问控制和监控策略。
剩余21页未读,继续阅读
资源评论
kkchenjj
- 粉丝: 2w+
- 资源: 5479
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功