GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

利用 AWS Lake Formation 探索元数据:第 1 部分(二)

2019 年 12 月 20 日

利用 AWS Lake Formation 探索元数据:第 1 部分(二)

创建目录数据库

您已创建用作数据湖存储后端的 S3 存储桶,并且已将数据添加到该存储桶。但是,在对数据进行_编目_之前,此数据在 Lake Formation 中尚不可用。


Lake Formation 在数据湖中保存与 Hive 兼容的数据目录。您必须先创建数据库,然后才能在 S3 存储后端中对数据进行编目或使用 Lake Formation 数据导入程序(稍后讨论)将数据推送到 S3。


Lake Formation 数据库采用逻辑结构,您稍后可以向其添加表。每个表都包含向 S3 中的一个或多个对象的映射,它们共同表示该表。表还包含基本元数据,包括但不限于文件格式、S3 位置、列标题和列类型。Lake Formation 用户还可以选择为表和列定义任意键值对,以更好地描述数据并用作数据发现的可查询属性。


您可以在控制台中手动创建一个或多个数据库,并使用 AWS SDK 或 AWS CLI 以编程方式填充其中的表,也可以通过定义 AWS Glue 爬网程序自动创建它们。


对于本博文,您必须定义以下三个逻辑数据库:


o amazon-reviews-prod


o amazon-reviews-test


o ny-taxi


然后,使用编目流程映射到您先前上传到 S3 存储后端的两个数据集。请记住,您有意创建了两个 Amazon 评论数据集副本,用来模拟数据湖中的生产数据库和测试数据库。


现在,请创建您的数据库。首先,在 Lake Formation 中将 IAM 用户和角色配置为管理员。


目录权限是指所选 IAM 主体可以直接使用的权限。可授予权限是指 IAM 主体稍后可以为其他 IAM 主体授予的权限。


例如,您可能希望通过授予目录权限,使数据库管理员 (DBA) 能够创建数据库。但是,通过禁用可授予权限,可以防止 DBA 意外地将此访问权限授予给开发人员。


现在,您已经授予了必要的权限,可以继续在目录中创建数据库。


  • 对于名称,请输入 amazon-reviews-prod

  • 对于位置,请输入 s3://<YOUR_BUCKET>/amazon-reviews-prod

  • 对于描述,请输入有意义的简短描述。

  • 对于此数据库中的新表,请选中默认的仅允许基于 IAM 的权限控制。在生产中,请评估这样做是否满足权限控制要求。


对其他两个数据库重复此过程:


  • 名称amazon-reviews-test

  • 位置:s3://<YOUR_BUCKET>/amazon-reviews-test

  • 名称ny-taxi

  • 位置:s3://<YOUR_BUCKET>/ny-taxi


完成这些步骤之后,您的目录中应该有三个数据库:amazon-reviews-prodamazon-reviews-testny-taxi


将表从 S3 添加到目录数据库

在上一节中,您在 Lake Formation 目录中创建了三个数据库。但是,这些目录数据库为空,尚未提供 S3 中的特定表、架构、文件格式或对象路径的相关信息。要添加此信息,请使用以下两种方法之一:


  • 使用控制台、SDK 或 AWS CLI 在目录中手动定义表。

  • 使用 AWS Glue 爬网程序搜索 S3 并将发现的表自动添加到目录中。


对于本博文,为 S3 中的三个数据集和 Lake Formation 数据目录中的数据库分别创建并手动运行一个 AWS Glue 爬网程序。详细演练不在本文讨论范围内。有关指导,请参阅在 AWS Glue 控制台上使用爬网程序


继续操作时,请牢记以下几点:


  • 为三个数据集分别创建一个爬网程序。您应该能够接受大多数默认的爬网程序设置。但是,爬网程序的 S3 路径应该为:


o s3://_YOUR_BUCKET_/amazon-reviews-prod/amazon-reviews


o s3://_YOUR_BUCKET_/amazon-reviews-test/amazon-reviews


o s3://_YOUR_BUCKET_/ny-taxi/trip-data


在运行爬网程序以填充目录之前,必须为它们分配 IAM 角色。该角色授予他们从数据湖的 S3 存储桶中读取数据、将爬网程序日志写入 Amazon CloudWatch 以及更新数据目录的权限。无论是创建新角色还是使用现有角色,都请记下 IAM 角色名称。您需要此信息来执行下一步操作。


除了在 IAM 中定义的权限外,您还必须明确授予 IAM 主体(角色或用户)从 Lake Formation 内部修改数据目录的能力。从概念上讲,这类似于与 IAM 一起使用的 S3 中的存储桶策略概念。在 Lake Formation 控制台的权限下,选择数据权限


授予 AWS Glue 爬网程序修改数据目录的能力。配置以下字段:


  • 对于 IAM 用户和角色,请选择 AWS Glue 爬网程序之前使用的 IAM 角色。

  • 对于数据库,请选择 amazon-reviews-prodamazon-reviews-testny-taxi 数据库。

  • 对于数据库权限,请选择所有权限。

  • 让所有可授予权限保持未选中状态。


当 AWS Glue 爬网程序获得修改 Lake Formation 数据目录的权限后,返回 AWS Glue 控制台并手动运行三个爬网程序。几分钟后,这些爬网程序应该已完成运行。每个爬网程序都应该会向数据目录添加一个表:


o amazon-reviews


o amazon-reviews


o trip-data


验证您的目录是否已更新。在 Lake Formation 控制台的数据目录下,选择,然后查看添加到相应的数据湖数据库中的三个新表,如以下屏幕截图所示。



在目录中编辑和添加元数据

AWS Glue 爬网程序会填充有关在 S3 中发现的表的标准元数据,包括(但不限于)属性,例如对象位置、文件格式、列标题和列类型。


但是,您可以手动编辑标准元数据或将其他自定义元数据添加到目录中,以使其更易于搜索并提高其提供的整体价值。在下一节中,我将逐步介绍编辑和添加元数据的几个示例。


编辑标准元数据

AWS Glue 爬网程序可从 CSV 文件的第一行推断出列名称。要查看 ny_taxi 表中自动填充的列名称,请查看表属性:


  1. 数据目录下,选择

  2. 选择 ny_taxi,然后向下滚动到架构部分。

  3. 选择编辑架构。数据列名称必须始终使用蛇形命名法,这意味着需要在单词之间使用“_”字符。更改所有 id 列以匹配其余列。如果查看原始数据的第一行,则会发现使用了不一致的命名。您可以手动更改元数据,而不是更改这些文件。

  4. 选择 vendorid 行,然后选择编辑。做出更改以包含蛇形命名法,然后选择保存

  5. dolocationidratecodeidpulocationid 重复以下步骤。做出更改后,选择另存为新版本

  6. 数据目录下,选择。如果搜索 pulocationid,则不会返回任何结果。

  7. 搜索新的列名称 pu_location_id。该搜索应该会返回预期结果,即 ny-taxi 数据库中的 trip_data 表。


添加自定义元数据

现在,尝试添加几个自定义表属性来帮助组织表。要添加的第一个表属性是 environment 变量,可帮助您确定表是用于开发、测试还是生产。要添加的第二个表属性是 department 变量,它允许您按部门对表进行分组。


  1. 在 Lake Formation 控制台的数据目录下,选择数据库

  2. 选择 ny-taxi 数据库,然后选择查看表

  3. 选择 trip_data 表,然后选择编辑表

  4. 表属性下,选择添加。将 environment 值设置为 dev,并将 department 值设置为 research1。选择保存。

  5. 注意:如果保存失败,请检查当前用户是否有修改表的权限

  6. 数据目录下,选择。在搜索栏中,键入“research”,然后按 Enter。未返回任何结果,因为不存在表属性值为 research 的表。但是,搜索 research****1 应该会返回 trip_data 表。

  7. 返回 trip-data 的表属性,并将 department 属性从 research1 更新为 research。完成编辑后,在表搜索中输入“研究”作为关键字时,将显示 trip-data 表:


小结

恭喜,您已经成功使用 Lake Formation 创建并编辑了您的第一个数据湖。您已使用该服务保护数据并将其提取到 S3 数据湖中,对数据进行编目,并自定义数据源的元数据。在本系列的第 2 部分中,我将向您展示如何使用 Lake Formation 的元数据搜索功能来发现数据。




作者介绍:


**



Julia Soscia 是总部设在纽约市的 Amazon Web Services 的解决方案架构师。**她的主要工作是帮助客户在 AWS 云平台上创建架构完善的环境。她是一位经验丰富的数据分析师,专注于大数据和分析。


**



Eric Weinberg 是 AWS Envision Engineering 团队的系统开发工程师。**他在构建和设计软件应用程序方面拥有 15 年的经验。


**



Francesco Marelli 是 Amazon Web Services 的高级解决方案架构师。**他在分析和数据管理方面拥有二十多年的经验。


Mat Werber 是 AWS 社区 SA 团队的解决方案架构师。 他负责在整个 AWS 堆栈中提供架构指导,并专注于无服务器、Redshift、DynamoDB 和 RDS。他还在 IT 监管、风险和控制方面具有审计背景。


2019 年 12 月 20 日 15:13315

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

评论

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

分布式数据库是无用的屠龙术吗?

海边的Ivan

企业架构 分布式数据库 业务中台

规范约束条件

喵叔

C# .net 编码习惯

特别评论:甲骨文的傲气

张晓楠

云计算 互联网巨头 企业文化

小议RPA

一品凡心

人工智能 RPA 自动化

var lady first

喵叔

C# .net 编码习惯

此为开卷

范学雷

2.Hello Xamarin

喵叔

C#

走出舒适区最好办法别走了,扩大它

乐少

dubbo-go 中如何实现远程配置管理

joe

golang Apache 开源 微服务架构 dubbo

禁止在构造函数里调用虚函数

喵叔

C# .net 编码习惯

测试

Chonge

翻译: Effective Go (2)

申屠鹏会

go 翻译

【深度】为您解读东西方艺术教育的专业设置差异对比~

默聲

减少装箱与拆箱

喵叔

C# .net 编码习惯

《小狗钱钱》——财富离我们并不遥远

尹晓铁

读书笔记 投资 成长 思维方式

初入响应式编程(上)

CD826

spring 微服务 Spring Cloud 响应式编程 reactor

Elasticsearch文档版本冲突原理与解决

Skysper

elasticsearch 乐观锁 悲观锁

如何做一名失败的安全架构师

石君

架构 安全架构师 安全评估

HTTP Methods和RESTful API的设计

孙苏勇

架构 系统设计 RESTful 接口

精纯还是混乱?职场十二箴言——重读“成为乔布斯”的思考(二)

石君

创业 乔布斯 成为乔布斯

浅谈汽车行业嵌入式软件发布的流程有多复杂

WB

程序员 软件

从流程、认知上做稳定的系统演进

Skysper

系统设计 质量管理

1. 什么是Xamarin.md

喵叔

C#

是时候要说再见了,春风十里,不如邮你!

乐少

做产品的同理心

孙苏勇

产品 产品经理 产品设计

多用as少用强制类型转换

喵叔

精纯还是混乱?职场十二箴言——重读“成为乔布斯”的思考(一)

石君

职场 乔布斯 成功学

删掉最后一句话

池建强

心理学 情绪控制

任正非管理哲学中的三个常识和三种科学

泰稳@极客邦科技

创业 团队管理 华为

做小池塘里的大鱼,还是大池塘里的小鱼?这是个问题。

泰稳@极客邦科技

创业 团队管理 目标管理

喔,明白了,成功也是一种苦难

泰稳@极客邦科技

创业 身心健康 企业文化 个人成长 心理

DNSPod与开源应用专场

DNSPod与开源应用专场

利用 AWS Lake Formation 探索元数据:第 1 部分(二)-InfoQ