Glue 功能简介-快速构建 Serverless ETL

2019 年 12 月 16 日

Glue 功能简介-快速构建 Serverless ETL

AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务,您可以用来登记、清理和丰富数据,并可以在数据存储之间可靠地移动数据。


Glue 的组件包括:


  • 数据目录

  • 爬网程序和分类器

  • ETL操作

  • 作业系统


在本篇文章中,主要展示了 Glue 的爬网程序,数据目录和 ETL 操作的功能,并通过一个业务场景完成一个简单的 demo。


先决条件: 到https://mockaroo.com/生成一份测试数据,上传到 s3://myglue-sample-data/rawdata/sampledata/。具体步骤,请参考:https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html


一.AWS Glue 数据目录


AWS Glue 数据目录是您的持久性元数据存储。它是一项托管服务,可让您在 AWS 云中存储、注释和共享元数据,就像在 Apache Hive 元存储中一样。


数据目录可以用于:


  • Athena

  • Redshift Spectrum

  • EMR

  • 以及自建Hadoop的Hive


使用 Glue 托管的数据目录有很多好处


  1. 只需通过爬虫爬取一次表结构就可以在多个地方使用

  2. 您无需再为数据目录进行每天备份,无需额外创建RDS来存储,节省维护成本

  3. Glue托管的数据目录是通过IAM策略进行管理,可以对不同的IAM用户限制相应的库表权限,非常灵活

  4. 同时Glue的库表也可以跨region,跨账户授权,非常适合多账户,跨region的集中式的元数据管理


数据库的创建


进入 Glue 控制台,在左侧导航栏选择<数据库>,点击添加数据库



创建后,数据库会在下面显示



在添加完数据库后,需要使用爬虫来爬取表,将表信息写入到数据库里


二.通过爬网程序解析并存储数据的元数据(metadata)


在传统的大数据业务场景中,一般都需要先建表,然后再进行操作,Glue 的爬网程序很好的解决了这部分操作,通过爬虫爬取源数据和 ETL 后数据的数据结构,并保存在 DataCatalog 相应的 Database 下。


具体操作


爬取 s3://myglue-sample-data/rawdata/sampledata/sampledata.csv 的数据结构


在 Glue 控制台,在左侧导航栏选择<爬网程序>,右侧主窗口点击“添加爬往程序”,输入爬网程序的名称



选择 Data Stores,即创建新的表



源数据在 S3 上,所以选择 S3,选择 S3 源数据的位置,表名不写,爬虫会自动根据文件名创建表名



添加另一个数据存储,选“否”



下一步,创建执行爬虫做需要的 Role,



为此爬往程序创建计划,选择“按需运行“



设置爬往程序的输出,选择之前创建过的 mymetastore



点击“下一步“,点击”完成“


至此,在“爬往程序“窗口,您可以看到新创建的爬虫程序已经在列表里。


点击“立即运行“



在页面下方,您可以看到爬网程序的运行状态。等待该爬网程序运行结束。


在左侧导航栏中,选择“表“,右侧筛选框中,输入之前创建的数据库“mymetastore“,您可以看到表 sampledata_csv 已经创建完毕



点击表,查看表结构如下



三.Serverless ETL


下面我们对该表进行 ETL,把源数据的字段进行 rename 后,写入到另一个 S3 位置


在左侧导航栏中,选择“表“,右侧页面点击”添加作业“



输入作业名称,Role 选择之前创建的 AWSGlueServiceRole-myfirstgluerole



指定数据源,选择要进行 ETL 的数据源



转换类型,选择默认值



指定数据目标,这里将 ETL 之后的数据存放在 S3 上的一个新位置,并以 Parquet 格式存储。这里选 S3://myglue-sample-data/etldata/sampledata



这里修改字段名称,然后点击”保存作业并编辑脚本”



进入 Glue ETL UI 编辑页面,可以看到代码部分,这里只做简单功能展示(具体 Glue 可以进行的操作见https://docs.aws.amazon.com/zh_cn/glue/latest/dg/aws-glue-programming.html),点击”运行作业”



显示运行成功后,到 S3 里可以看到文件已经成功输出



重复前述的第 2 步,创建一个新的爬网程序,对 ETL 后的数据进行爬取。


完成后,你将会看到新的数据结构已经变化



附: Data Catalog 在 Athena 和 EMR 里的应用


进入 Athena 的页面,左侧导航栏<数据库>下面选择”mymetastore”,


我们可以看到 Athena 里已经有这两张表了,对其中一张表进行查询



在创建 EMR 的时候,选择 Glue 作为 Hive 的 metastore



Glue 的 DB 如下



Hive 里显示的如下



依次执行


Python


use mymetastore;
show tables;
desc sampledata;
desc sampledata_csv;
复制代码


可以看出表结构信息和 Glue console 显示的一样,



执行简单的 Hive SQL 查询,成功


Bash


select * from sampledata limit 10;
select count(1) from sampledata;
复制代码



使用 Glue 作为 EMR Hive 的 metastore 有一些限制,详看


https://docs.aws.amazon.com/zh_cn/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html


本篇作者


!



### [](https://amazonaws-china.com/cn/blogs/china/tag/%E9%9F%A9%E5%AE%87%E5%85%89/)
AWS解决方案架构师,熟悉互联网的大数据业务场景,并有丰富的基于AWS上大数据解决方案的经验。在加入AWS之前,在猎豹移动任职大数据高级运维工程师,对云上的运维,Devops,大数据有丰富的实践经验
复制代码


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/glue-function-introduction-build-serverless-etl-quickly/


2019 年 12 月 16 日 15:50246

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

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

列个清单-《清单革命》

Jack Hong

坚持ARTS(week-1)

王钰淇

ARTS 打卡计划

20200518-20200524朋友圈思考汇总

罗小布

日常思考

程序员的晚餐 | 5 月 24 日 咖喱鸡块

清远

美食

ziliqa生态打造区块链技术实体应用新标杆

极客编

在线文档的开发难度与突破

Geek_Willie

分布式协同 SpreadJS 在线文档

Implement Stack using Queues

Forelax

LeetCode

JUC整理笔记二之聊聊volatile

JFound

人工智能学习心得--人工智能分类

岛乾坤

AI

python实现·十大排序算法之归并排序(Merge Sort)

南风以南

Python 排序算法 归并排序

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(二)

图雀社区

node.js vue.js Vue

思考:如何打造一个优秀的研发体系?

菜根老谭

研发管理 研发效能 研发体系

手把手透析C语言堆内存申请malloc及扩容realloc

卓丁

c 堆内存管理 heap memory malloc realloc

DDD 中的那些模式 — CQRS

Joshua

领域驱动设计 DDD 事件驱动 CQRS Event Driven

学会推销自己

一尘观世界

创业 程序员 外包 销售 接项目

别在发愁写页面了,强烈推荐几款傻瓜式扒网站神器!!

公众号:V5codings

ARTS 打卡 WEEK1

编程之心

ARTS 打卡计划

回“疫”录(24):开始了就不算晚

小天同学

疫情 个人成长 回忆录 个人感想 日常思考

绿宝这条宝藏街,夜宵也太太太太太好吃了吧!

极客编

最优组合问题-贪心算法

公众号:好奇心森林

Rust 遇上 C/C++ (一):数组操作

Coding Fatty

c c++ rust 编程语言

从 Node 到 Deno

寇云

node.js deno

Spring事务@Transactional底层原理

公众号:好奇心森林

spring 事务 hiber

理解这八大优势,才算精通单元测试

测试 单元测试

ARTS打卡第一周

落曦

重学 Java 设计模式:实战抽象工厂模式

小傅哥

设计模式 小傅哥 重构 代码质量 代码坏味道

Cassandra集群架构及算法剖析

老任物联网杂谈

大数据 分布式 Cassandra 时序数据库

利用树形结构辅助实现去重算法

卓丁

算法 algorithm tree Deduplication

Refcard,近300份技术大咖总结的cheat sheet

KAMI

学习 开发 分享 作弊卡

ARTS打卡第一周

Tom

我是程序员,我为自己代言,我相信程序改变世界,虽然少不了质疑和嘲笑

陆陆通通

编程 程序员 高薪 代码

Glue 功能简介-快速构建 Serverless ETL-InfoQ