Amazon Web Services (AWS) Glue是一个完全托管的ETL(提取、转换和加载服务),它对数据进行分类、清理、丰富,并在各种数据存储之间可靠地移动数据。这些数据存储包括一个被称为AWS Glue数据目录的中央元数据存储库,它是一个自动生成Python或Scala代码的ETL引擎,以及一个灵活的调度程序,它处理依赖项解析作业监视和重试,因此不需要设置或管理基础设施。
让我们回顾一下AWS Glue的一些用例:
- 构建一个数据仓库来组织、验证和格式化数据。
- 对Amazon S3数据湖运行无服务器查询。
- 创建并运行事件驱动的ETL管道
AWS胶水术语
数据目录:数据目录是存储在AWS Glue中的元数据。它包含表定义、作业定义和用于管理AWS粘合环境的其他受控信息。每个帐户每个区域有一个数据目录。
分类器:分类器决定数据的模式。AWS glue为CSV、Jason和XML等常见文件类型提供了分类器。AWS glue还为使用JDBC (Java数据库连接)连接的常见关系数据库管理系统提供了分类器。您可以通过在XML文档中指定行标记来编写自己的分类器。
连接:连接包含连接到数据存储所需的属性。
爬虫:爬虫是一种将数据存储连接到源或目标的程序。它通过优先排序的分类器列表来确定数据的模式,然后在数据目录中创建元数据表。
数据库:数据库是一组关联的数据目录表定义,在AWS glue中组织成一个逻辑组。
数据存储:数据存储是用于存储数据的存储库。一些例子包括Amazon S3桶和关系数据库。
工作:作业是执行ETL工作所需的业务逻辑。它由转换脚本、数据源和数据目标组成,作业运行由触发器发起,触发器可以由事件调度或触发。
胶水的好处
易于管理
亚马逊几乎为我们管理一切。用于为我们的ETL作业分配指定数量的资源的选项可以很容易地扩大和缩小。Amazon管理所有更新、安全补丁和版本升级,因此我们不需要部署任何维护。云计算系统使我们能够轻松地将来自不同来源的数据存储到数据仓库中,并使用您的ETL工具。
成本管理
亚马逊是一个价格非常合理的云服务,因为我们只为我们使用的资源付费。例如,如果我们在自己的办公空间里有一台服务器,我们仍然必须让它一直持续运行,并为此付费。但在亚马逊的案例中,一切都是管理的,我们不需要为任何人支付任何费用,我们也不出租任何东西。你只需要按我们使用的资源的确切百分比付费。
优越的功能
胶水具有优越的功能。您将获得ETL工具的主要好处,因为它可以轻松地与其他服务以及其他云、离线服务和第三方服务集成。此外,由于亚马逊作为一个组织的目标是提供与您在数据分析或数据科学职业生涯中所做的许多事情的兼容性,因此它为组织提供了最实惠和可靠的云服务。
AWS胶水的工作原理
下面我们可以看到AWS Glue是如何通过使用AWS Glue服务将CSV文件从S3桶导入到Redshift数据仓库的。
- 我们已经创建了一个带有一些虚拟数据的示例CSV文件,并将该文件上传到Amazon S3桶中,我们将把它导入到Redshift中。
- 为了将数据导入Redshift,我们必须启动Redshift集群。
- 首先,我们将创建一个分类器。您将转到AWS Glue服务、分类器,然后转到“添加分类器”。在这里,我们将更改一些选项,如分类器类型,其中您将选择“CSV”,分类器分隔符,其中您将添加“逗号”,然后是列标题和列名。
- 现在我们需要为S3 bucket中的CSV文件创建一个爬虫程序。为此,您将执行以下操作:
-
- 转到AWS Glue,爬虫,然后添加爬虫。在爬虫信息中指定“爬虫名称”和“添加分类器”,这是我们在第三步中创建的。
- 接下来,转到下一页,在那里我们需要指定爬虫源类型。这就是“数据存储”。
- 下一页将是数据源。选择数据源“S3”,并在包含路径选项中,选择带有S3桶的CSV文件位置。
- 例如,“s3://aksh-s3-009/Emp.csv。”
- 接下来,我们需要选择IAM(身份和访问管理)角色。IAM角色允许爬虫运行并访问您的Amazon S3数据存储。我们可以通过简单地指定IAM角色名称来创建一个新的IAM角色,AWS将创建一个具有运行和访问S3数据存储所需的所有权限的角色。
- 现在我们可以创建一个时间表并设置频率。有6个选项,我们可以设置频率:
- 按需运行
- 每小时
- 每天
- 选择一天
- 每周
- 每月
- 对于输出,我们需要使用“add database”创建一个数据库,这将帮助我们创建一个数据库。
- 最后,我们检查更改并创建一个状态为“Ready”的爬虫。
-
- 这个爬虫基本上会访问S3,识别CSV文件的结构,并在数据库中使用元数据创建一个表。为此,我们需要通过单击“run crawler”来运行爬虫程序。运行爬虫后,状态会发生变化。在开始并完成任务后,它将再次显示状态为“Ready”以及“Table added”列。“Table added”列将显示1,这意味着在数据库中添加了1个表。我们还可以通过单击AWS Glue服务中的tables选项进行验证。
- 现在我们将为红移创建一个连接。要创建连接,单击“添加连接”,然后指定连接名称和连接类型,这将是“Amazon Redshift”。接下来,我们将指定已经创建的集群详细信息,我们将指定集群名称、数据库名称、用户名和密码。一旦完成,点击“完成”。
-
- 在创建连接后,我们必须测试它是否连接到红移。为此,选择“连接”并单击“测试连接”。它还将请求IAM角色。您将选择与我们在爬虫创建过程中创建的相同的IAM角色。
- 现在,我们将创建另一个爬虫程序,它将连接到Redshift数据库,并为表标识模式。步骤将与步骤4中创建爬虫程序的步骤相同。唯一的区别是对于数据存储,我们将选择“JDBC”。在连接中,选择我们在第5步中创建的连接。这里我们还需要指定红移集群中表的路径。例如,“dev/public/emp”。在下一步中,我们需要指定IAM角色。我们将选择我们已经创建的。之后,我们将请求一个数据库。在这里,我们需要为红移爬虫程序创建一个数据库,这将与我们为CSV爬虫程序创建的数据库相同。 After this, click “finish.”
-
- 现在我们有了2个爬虫,我们还需要运行一个红移爬虫,它将检测表配置、模式定义和验证,并且表将在table部分中创建。
- 下一步是创建将数据从源S3 CSV文件传输到目标Redshift数据库表的作业。你需要做以下事情:
-
- 指定作业名称并选择我们前面创建的IAM角色。
- 作业类型为Spark。在advance选项中,选择“作业书签”来启用,这样如果我们多次运行作业,它将记住它已经传输的记录,这样就不会传输两次。
- 在数据源中,选择由爬虫程序创建的S3表“1 CSV-crawler”。
-
- 在数据目标中,选择“crawler 2 Redshift -crawler”创建的Redshift表。
- 现在我们来做映射。为此,我们将验证AWS Glue创建的映射。首先,您将通过选择具有到目标的映射的其他列来更改映射。我们可以清除所有映射并重置为默认的AWS Glue映射。AWS Glue使用已定义的映射生成一个脚本。
- 在我们点击“保存作业”和“编辑脚本”之后,我们将生成一个脚本,我们可以在其中添加高级选项,如果需要的话进行转换,我们将保存脚本并关闭它。
- 现在我们将选择作业“S3-To-Redshift-Transfer”,然后进入action并运行作业。
-
- 作业从CSV文件中接收到数据后,将数据传输到Redshift数据库表中,我们可以通过查询Redshift表来验证数据。
Perficient如何帮助您?
Perficient是经过认证的亚马逊网络服务合作伙伴,在云平台解决方案、联络中心、应用现代化、迁移、数据分析、移动、开发人员和管理工具、物联网、无服务器、安全等方面拥有超过10年的企业级应用交付经验和专业知识。配合我们业界领先的战略和团队,Perficient能够帮助企业应对最严峻的挑战,并最大限度地利用他们的实施和集成。
不错的文章