本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 Lake Formati JDBC on 中的来源创建数据湖
本教程将指导您完成在 AWS Lake Formation 控制台上使用 Lake Formation 从JDBC源创建和加载第一个数据湖的步骤。
主题
- 目标受众
- JDBC教程先决条件
- 第 1 步:创建数据分析师用户
- 第 2 步:在 AWS Glue 中创建连接
- 第 3 步:为数据湖创建 Amazon S3 存储桶
- 第 4 步:注册 Amazon S3 路径
- 第 5 步:授予数据位置权限
- 第 6 步:在数据目录中创建数据库
- 第 7 步:授予数据权限
- 第 8 步:使用蓝图创建工作流
- 第 9 步:运行工作流
- 第 10 步:在桌子SELECT上拨款
- 第 11 步:使用 Amazon Athena查询数据湖
- 第 12 步:使用 Amazon Redshift Spectrum 查询数据湖中的数据
- 第 13 步:使用 Amazon Redshift Spectrum 授予或撤销 Lake Formation 权限
目标受众
下表列出了本AWS Lake Formation JDBC教程中使用的角色。
角色 | 描述 |
---|---|
IAM管理员 | 可以创建 AWS Identity and Access Management (IAM) 用户和角色以及亚马逊简单存储服务 (Amazon S3) 存储桶的用户。有AdministratorAccess AWS 托管策略。 |
数据湖管理员 | 可以访问数据目录、创建数据库以及向其他用户授予 Lake Formation 权限的用户。IAM权限比IAM管理员少,但足以管理数据湖。 |
数据分析人员 | 可以对数据湖运行查询的用户。拥有的权限仅足以运行查询。 |
工作流角色 | 具有运行工作流程所需IAM策略的角色。 |
有关完成教程的先决条件的信息,请参阅JDBC教程先决条件。
JDBC教程先决条件
在开始本AWS Lake Formation JDBC教程之前,请确保您已完成以下操作:
-
完成Lake Formation 入门中所述的任务。
-
确定要在本教程中使用的JDBC可访问数据存储。
-
收集创建AWS Glue连接类型所需的信息JDBC。此数据目录对象包括数据存储、登录凭证,以及其他VPC特定配置信息(如果数据存储是在亚马逊虚拟私有云 (AmazonVPC) 中创建的)。URL有关更多信息,请参阅《AWS Glue 开发人员指南》中的在 AWS Glue 数据目录中定义连接。
本教程假设你熟悉 AWS Identity and Access Management (IAM)。有关的信息IAM,请参阅《IAM用户指南》。
要开始,请执行第 1 步:创建数据分析师用户操作。
第 1 步:创建数据分析师用户
在此步骤中,您将创建一个 AWS Identity and Access Management (IAM) 用户作为数据湖的数据分析师 AWS Lake Formation。
此用户拥有查询数据湖所需的一组最低权限。
-
从 IAM 打开 https://console.aws.amazon.com/iam
控制台。以您在中创建的管理员用户创建具有管理访问权限的用户或使用 AdministratorAccess
AWS 托管策略的用户身份登录。 -
使用以下设置创建名为
datalake_user
的用户:-
启用 AWS Management Console 访问权限。
-
设置密码,不需要重置密码。
-
附加
AmazonAthenaFullAccess
AWS 托管策略。 -
附加下面的内联策略。将该策略命名为
DatalakeUserBasic
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }
-
第 2 步:在 AWS Glue 中创建连接
注意
如果您已经与JDBC数据源建立了AWS Glue连接,请跳过此步骤。
AWS Lake Formation 通过AWS Glue连接访问JDBC数据源。连接是数据目录对象,其中包含连接到数据来源所需的所有信息。您可以使用 AWS Glue 控制台创建连接。
创建连接
-
在 https://console.aws.amazon.com/glue/
中打开 AWS Glue 控制台,并以您在创建具有管理访问权限的用户中创建的管理员用户身份登录。 -
在导航窗格的 Data catalog (数据目录) 下,选择 Connections (连接)。
-
在 Connectors (连接器) 页面上,选择 Create custom connector (创建自定义连接器)。
-
在连接器属性页面上,输入
datalake-tutorial
作为连接名称,然后选择JDBC作为连接类型。然后选择下一步。 -
继续运行连接向导并保存连接。
有关创建连接的信息,请参阅《AWS Glue 开发人员指南》中的AWS Glue JDBC连接属性。
第 3 步:为数据湖创建 Amazon S3 存储桶
在这一步,您要创建 Amazon Simple Storage Service (Amazon S3) 存储桶作为数据湖的根位置。
-
打开 Amazon S3 控制台,https://console.aws.amazon.com/s3/
并以您在中创建的管理员用户身份登录创建具有管理访问权限的用户。 -
选择创建存储桶,然后通过向导创建名为的存储桶
,其中<yourName>
-datalake-tutorial<yourName>
是您的名字首字母和姓氏。例如:jdoe-datalake-tutorial
。有关创建 Amazon S3 存储桶的详细说明,请参阅《Amazon Simple Storage Service 用户指南》中的如何创建 S3 存储桶?。
第 4 步:注册 Amazon S3 路径
在这一步,您要创建 Amazon Simple Storage Service (Amazon S3) 路径作为数据湖的根位置。
-
打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/
。以数据湖管理员身份登录。 -
在导航窗格的管理下,选择数据湖位置。
-
选择注册位置,然后选择浏览。
-
选择您之前创建的
存储桶,接受默认IAM角色<yourName>
-datalake-tutorialAWSServiceRoleForLakeFormationDataAccess
,然后选择注册位置。有关注册位置的更多信息,请参阅向数据湖添加 Amazon S3 位置。
第 5 步:授予数据位置权限
主体必须拥有对数据湖位置的数据位置权限,才能创建指向该位置的数据目录表或数据库。您必须向该IAM角色授予工作流的数据定位权限,这样工作流才能写入数据摄取目标。
-
在 Lake Formation 控制台的导航窗格中,在权限下选择数据位置。
-
选择授权,然后在授予权限对话框中执行以下操作:
-
对于IAM用户和角色,选择
LakeFormationWorkflowRole
。 -
对于存储位置,选择您的
存储桶。<yourName>
-datalake-tutorial
-
-
选择授权。
有关数据位置权限的更多信息,请参阅Underlying data access control。
第 6 步:在数据目录中创建数据库
Lake Formation 数据目录中的元数据表存储在数据库中。
-
在 Lake Formation 控制台的导航窗格中,在数据目录下选择数据库。
-
选择创建数据库,然后在数据库详细信息下输入名称
lakeformation_tutorial
。 -
将其他字段留空,然后选择创建数据库。
第 7 步:授予数据权限
您必须授予在数据目录中创建元数据表的权限。由于工作流与角色 LakeFormationWorkflowRole
一起运行,因此您必须向该角色授予这些权限。
-
在 Lake Formation 控制台的导航窗格中,在权限下选择数据湖权限。
-
选择授权,然后在授予数据权限对话框中执行以下操作:
-
在 “委托人” 下,针对IAM用户和角色,选择
LakeFormationWorkflowRole
。 -
在 LF 标签或目录资源下,选择命名数据目录资源。
-
对于数据库,请选择您之前创建的数据库
lakeformation_tutorial
。 -
在数据库权限下,选择创建表、更改和删除,如果已选中超级,请将其清除。
-
-
选择授权。
有关授予 Lake Formation 权限的更多信息,请参阅Lake Formation 权限概述 。
第 8 步:使用蓝图创建工作流
该 AWS Lake Formation 工作流程会生成AWS Glue任务、爬网程序和触发器,用于发现数据并将其摄取到您的数据湖中。您可以基于其中一个预定义的 Lake Formation 蓝图创建工作流。
-
在 Lake Formation 控制台的导航窗格中,选择蓝图,然后选择使用蓝图。
-
在使用蓝图页面的蓝图类型下,选择数据库快照。
-
在导入源下的数据库连接中,选择您刚刚创建的连接
datalake-tutorial
,或者为您的数据来源选择一个现有连接。 -
对于源数据路径,以
形式输入从中摄取数据的路径。<database>
/<schema>
/<table>
您可以用百分比 (%) 字符替换架构或表。对于支持架构的数据库,请输入
<database>
/<schema>
/% 匹配中的所有表<schema>
之内<database>
。 Oracle Database 和 My SQL 不支持路径中的架构;而是输入<database>
/%。 对于 Oracle 数据库,<database>
是系统标识符 (SID)。例如,如果 Oracle 数据库有
orcl
SID,则输入orcl/%
匹配JDCB连接中指定的用户有权访问的所有表。重要
此字段区分大小写。
-
在导入目标下,指定以下参数:
目标数据库 lakeformation_tutorial
目标存储位置 s3://
<yourName>
-datalake-tutorialData format(数据格式) (选择实木复合地板或CSV) -
对于导入频率,选择按需运行。
-
在导入选项下,指定以下参数:
工作流名称 lakeformationjdbctest
IAM角色 LakeFormationWorkflowRole
表前缀 jdbctest
注意
必须小写。
-
选择创建,然后等待控制台报告已成功创建工作流。
提示
您是否收到了以下错误消息?
User: arn:aws:iam::
<account-id>
:user/<datalake_administrator_user>
is not authorized to perform: iam:PassRole on resource:arn:aws:iam::<account-id>
:role/LakeFormationWorkflowRole...如果是,请检查是否已更换
<account-id>
在具有有效 AWS 账号的数据湖管理员用户的内联策略中。
第 9 步:运行工作流
由于您指定了工作流程 run-on-demand,因此必须在中手动启动工作流程 AWS Lake Formation。
-
在 Lake Formation 控制台的蓝图页面上,选择工作流
lakeformationjdbctest
。 -
选择操作,然后选择启动。
-
当工作流运行时,您可以在上次运行状态列中查看其进度。时不时地选择刷新按钮。
状态从RUNNING、到 “正在发现”、“正在导入” 和 “正在导入”,再到COMPLETED。
工作流完成后:
-
数据目录中将含有新的元数据表。
-
您的数据已被摄取到数据湖中。
如果工作流失败,请执行以下操作:
-
选择工作流。选择操作,然后选择查看图表。
该工作流将在 AWS Glue 控制台中打开。
-
选择该工作流,然后选择历史记录选项卡。
-
选择最近的运行,然后选择查看运行详细信息。
-
在动态(运行时)图表中选择失败的作业或爬网程序,然后查看错误消息。失败的节点为红色或黄色。
-
第 10 步:在桌子SELECT上拨款
您必须在中授予对新数据目录表的SELECT
权限, AWS Lake Formation 这样数据分析师才能查询这些表所指向的数据。
注意
工作流会自动向运行它的用户授予对它创建的表的 SELECT
权限。由于数据湖管理员运行了该工作流,因此您必须向数据分析师授予 SELECT
。
-
在 Lake Formation 控制台的导航窗格中,在权限下选择数据湖权限。
-
选择授权,然后在授予数据权限对话框中执行以下操作:
-
在 “委托人” 下,针对IAM用户和角色,选择
datalake_user
。 -
在 LF 标签或目录资源下,选择命名数据目录资源。
-
对于数据库,选择
lakeformation_tutorial
。表列表即会填充。
-
对于表,从数据来源中选择一个或多个表。
-
在表和列权限 下,选择选择。
-
-
选择授权。
以数据分析师的身份执行下一步。
第 11 步:使用 Amazon Athena查询数据湖
使用 Amazon Athena 控制台查询数据湖中的数据。
-
打开 Athena 控制台,并https://console.aws.amazon.com/athena/
以数据分析师用户身份登录。 datalake_user
-
如有必要,请选择开始使用以继续使用 Athena 查询编辑器。
-
对于 Data source (数据源),选择 AwsDataCatalog。
-
对于 Database (数据库),请选择
lakeformation_tutorial
。表列表即会填充。
-
在其中一个表旁边的弹出菜单中,选择预览表。
查询即会运行并显示 10 行数据。
第 12 步:使用 Amazon Redshift Spectrum 查询数据湖中的数据
您可以设置 Amazon Redshift Spectrum 以查询您导入到 Amazon Simple Storage Service (Amazon S3) 数据湖中的数据。首先,创建一个 AWS Identity and Access Management (IAM) 角色,该角色用于启动 Amazon Redshift 集群和查询 Amazon S3 数据。然后,向该角色授予对您要查询的表的 Select
权限。然后,授予该用户使用 Amazon Redshift 查询编辑器的权限。最后,创建一个 Amazon Redshift 集群并运行查询。
您要以管理员身份创建集群,并以数据分析师的身份查询集群。
有关 Amazon Redshift Spectrum 的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的使用 Amazon Redshift Spectrum 查询外部数据。
设置运行 Amazon Redshift 查询的权限
-
打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。以您在中创建的管理员用户创建具有管理访问权限的用户(用户名 Administrator
)或使用AdministratorAccess
AWS 托管策略的用户身份登录。 -
在导航窗格中,选择策略。
如果这是您首次选择 Policies,则会显示 Welcome to Managed Policies 页面。选择开始使用。
-
选择创建策略。
-
选择JSON选项卡。
-
粘贴到以下JSON政策文件中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }
-
完成后,选择审核对策略进行审核。策略验证程序将报告任何语法错误。
-
在查看策略页面上,输入
RedshiftLakeFormationPolicy
作为您要创建的策略的名称。输入描述(可选)。查看策略摘要以查看您的策略授予的权限。然后,选择创建策略以保存您的工作。 -
在IAM控制台的导航窗格中,选择角色,然后选择创建角色。
-
对于选择可信实体,选择 AWS 服务。
-
选择 Amazon Redshift 服务来代入此角色。
-
为您的服务选择 Redshift Customizable (Redshift 可自定义)。然后选择 Next: Permissions (下一步:权限)。
-
搜索刚创建的策略
RedshiftLakeFormationPolicy
,然后在列表中选中该策略名称旁边的复选框。 -
选择下一步:标签。
-
选择下一步:审核。
-
对于角色名称,输入名称
RedshiftLakeFormationRole
。 -
(可选)对于 Role description (角色描述),输入新角色的描述。
-
检查该角色,然后选择创建角色。
授予对 Lake Formation 数据库中要查询的表的 Select
权限
-
打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/
。以数据湖管理员身份登录。 -
在导航窗格的权限下,选择数据湖权限,然后选择授权。
-
提供以下信息:
-
对于IAM用户和角色,请选择您创建的IAM角色
RedshiftLakeFormationRole
。当您运行 Amazon Redshift 查询编辑器时,它会使用此IAM角色来获得对数据的权限。 -
对于 Database (数据库),请选择
lakeformation_tutorial
。表列表即会填充。
-
对于表,选择数据来源中要查询的表。
-
选择选择表权限。
-
-
选择授权。
设置 Amazon Redshift Spectrum 并运行查询
-
通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshift
。以用户 Administrator
的身份登录。 -
选择创建集群。
-
在创建集群页面上,输入
redshift-lakeformation-demo
作为集群标识符。 -
对于节点类型,选择 dc2.large。
-
向下滚动,在数据库配置下输入或接受以下参数:
-
管理用户名称:
awsuser
-
管理用户密码:
(
Choose a password
)
-
-
展开集群权限,对于可用IAM角色,选择RedshiftLakeFormationRole。然后选择添加IAM角色。
-
如果您必须使用的端口与默认值 5439 不同,请关闭其他配置旁边的使用默认值选项。展开数据库配置部分,然后输入新的数据库端口号。
-
选择创建集群。
集群页面即会加载。
-
等待到集群状态变为可用。定期选择刷新图标。
-
向数据分析师授予对集群运行查询的权限。为此,请完成以下步骤。
-
在打开IAM控制台 https://console.aws.amazon.com/iam/
,然后以 Administrator
用户身份登录。 -
在导航窗格中,选择用户,然后选择将以下托管策略附加到用户
datalake_user
。-
AmazonRedshiftQueryEditor
-
AmazonRedshiftReadOnlyAccess
-
-
-
退出 Amazon Redshift 控制台,然后以用户
datalake_user
身份重新登录。 -
在左侧垂直工具栏中,选择EDITOR图标以打开查询编辑器并连接到集群。如果连接到数据库对话框出现,请选择集群名称
redshift-lakeformation-demo
,然后输入数据库名称dev
、用户名awsuser
和您创建的密码。然后,选择 Connect to database (连接到数据库)。注意
如果系统没有提示您输入连接参数,并且已经在查询编辑器中选择了另一个集群,请选择更改连接打开连接到数据库对话框。
-
在新查询 1 文本框中,输入并运行以下语句以将 Lake Formation 中的数据库
lakeformation_tutorial
映射到 Amazon Redshift 架构名称redshift_jdbc
:重要
Replace(替换)
<account-id>
使用有效的 AWS 账号,以及<region>
使用有效的 AWS 区域名称(例如us-east-1
)。create external schema if not exists redshift_jdbc from DATA CATALOG database 'lakeformation_tutorial' iam_role 'arn:aws:iam::
<account-id>
:role/RedshiftLakeFormationRole' region '<region>
'; -
在选择架构下的架构列表中,选择 redshift_jdbc。
表列表即会填充。查询编辑器仅显示您被授予了对其的 Lake Formation 数据湖权限的表。
-
在表名称旁边的弹出菜单中,选择预览数据。
Amazon Redshift 将返回前 10 行。
现在,您可对您对其拥有权限的表和列运行查询。
第 13 步:使用 Amazon Redshift Spectrum 授予或撤销 Lake Formation 权限
Amazon Redshift 支持使用修改后的语句授予和撤销 Lake Formation 对数据库和表的权限。SQL这些语句与现有的 Amazon Redshift 语句相似。有关更多信息,请参阅《亚马逊 Redshift 数据库开发者指南》REVOKE中的GRANT和。