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

阅读数:13 2019 年 12 月 20 日 15:13

利用 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 Lake Formation 探索元数据:第 1 部分(二)

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

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 表:
    利用 AWS Lake Formation 探索元数据:第 1 部分(二)

小结

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


作者介绍:

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

**利用 AWS Lake Formation 探索元数据:第 1 部分(二)Eric Weinberg 是 AWS Envision Engineering 团队的系统开发工程师。** 他在构建和设计软件应用程序方面拥有 15 年的经验。

**利用 AWS Lake Formation 探索元数据:第 1 部分(二)Francesco Marelli 是 Amazon Web Services 的高级解决方案架构师。** 他在分析和数据管理方面拥有二十多年的经验。

利用 AWS Lake Formation 探索元数据:第 1 部分(二)Mat Werber 是 AWS 社区 SA 团队的解决方案架构师。 他负责在整个 AWS 堆栈中提供架构指导,并专注于无服务器、Redshift、DynamoDB 和 RDS。他还在 IT 监管、风险和控制方面具有审计背景。

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

评论

发布