构建从Amazon Glue Crawler到Amazon Glue Job的工作流程

对于数据科学家来讲,每天花费的大量时间主要在解决实际业务问题上,需要分析和收集支持信息,得出问题的结论。很多情况下,特定的任务和目标可能都需要一个人来完成,而开发ETL又是必不可少的工作,什么样的平台可以满足他们的需求?

轻量化,免运维,交互式展现,自动化的工作流,可视化的监控,这些只需要在Jupyter Notebook中操作,就可以轻松地准备和加载数据以供分析。

???? 想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注2021亚马逊云科技中国峰会!点击图片报名吧~

在本文中,我们将利用无服务器架构工作流,用于表结构的爬取和执行ETL作业,从而实现上述步骤的自动化和可视化。

用产品的方式来解决,他们习惯用Python代码在Jupyter Notebook中开发,图形化展示各种数据。创建可视化的端到端的工作流程,以最终输出结果为导向。跟业务无关的工作,其实是可以用产品的方式解决的。

那么减少人工重复工作,监控每个任务的运行状态和日志记录,实现整个流程的自动化。

方案概述

本文将以一个常见的使用场景,通过Amazon Step Functions Data Science SDK创建基于无服务器架构的工作流,过程如下:

1. 创建Amazon Lambda调用Amazon Glue进行Crawler工作,识别数据格式和Schema

2. 创建Amazon Lambda检查Amazon Glue Crawler工作状态,如果返回值为null,即认为Crawler执行完成

3. 使用Amazon Glue进行ETL工作,生成样本数据集

下图演示了上述Amazon Step Functions无服务器架构工作流:

后续操作使用了下列亚马逊云科技服务:

Amazon Step Functions ,是由多个离散步骤组成的状态机,其中每个步骤都可以执行任务、作出选择、启动并行执行或管理超时。其中一个步骤的输出作为下一个步骤的输入,并支持将错误处理嵌入到工作流中。

  • Amazon Step Functions

    https://www.amazonaws.cn/step-functions/

Amazon Step Functions Data Science SDK,相比较Amazon Step Functions ,使用Python代码轻松创建、执行和可视化Amazon Step Functions工作流,而不是只能使用基于JSON语言定义Amazon Step Functions。

本文以Amazon Step Functions Data Science SDK为主线,讨论如何创建Amazon Step Functions步骤、使用参数、集成服务特定的功能,将这些步骤关联在一起,创建和可视化工作流。

  • Amazon Step Functions Data Science SDK

    https://docs.amazonaws.cn/zh_cn/step-functions/latest/dg/concepts-python-sdk.html

  • Amazon Step Functions

    https://www.amazonaws.cn/step-functions/

Amazon Glue是一项完全托管的提取、转换和加载(ETL)服务,在分布式Apache Spark环境中运行,能够充分利用Spark而无需管理基础设施。

  • Amazon Glue

       https://www.amazonaws.cn/glue/

1.创建Amazon Glue Crawler和Amazon Glue Job

在控制面板中创建Amazon Glue Crawler,请参考手册

https://docs.aws.amazon.com/zh_cn/glue/latest/dg/console-crawlers.html

在控制面板中创建Amazon Glue Job,请参考手册

https://docs.aws.amazon.com/zh_cn/glue/latest/dg/add-job.html

2. 创建两个Amazon Lambda Functions

2.1 首先,创建一个启动Crawler作业的Amazon Lambda Functions,命名为Crawler_initial,本环境使用Python 3.8 Runtime

2.2 创建一个新的Role,或者使用已有的Role,这个Role必须有访问Amazon Glue的权限

2.3 在IAM下查看Role所关联的策略,关联“Amazon GlueServiceRole”

2.4 在已有的Amazon lambda_function.py中可以直接编写代码,并点击“Deploy”部署

 

2.5 下边为执行Crawler的代码,要指定crawlername,点击“Test”,可以在“Execution results”中看到相关的日志

2.6 其次,创建一个检查Crawler作业状态的Amazon Lambda Functions,创建过程不再赘述,代码如下

3. 创建Jupyter Notebook

3.1 创建Amazon SageMaker 笔记本实例

3.2 创建一个笔记本实例,类型选择t2.medium。选择或者创建一个IAM角色(IAM Role),其他部分选择默认选项,点击创建(Create)

3.3 笔记本创建完成后,打开Jupyter,选择New,新建一个ipynb,选择内核为conda_python3

4. 使用Amazon Step Functions 

Data Science SDK创建和定义工作流

4.1 安装和加载必需的模块

4.2 在Console创建一个Role附加到Amazon Step Functions

4.3 定义Step,指定Execute Crawler的Amazon Lambda名字

4.4 定义Step,指定Check Crawler Status的Amazon Lambda名字


此处采用retry的方式来检查Crawler是否完成,建议先手工执行Crawler评估需要的时间,再定义间隔时间

4.5 定义Step,指定执行Amazon Glue Job的名字

5. 运行上述Workflow

指定Workflow Name

5.1 新建名为My-ETL-workflow01的工作流

5.2 生成图示

5.3 执行Work flow,可以看到不同的颜色代表不同的状态,完整执行过程的图示如下

5.4 如果执行失败,可以查看events

6. 总结

本文讨论的是使用Amazon Step Functions Data Science SDK,创建一个基于无服务器架构的数据ETL工作流。对于数据科学团队来讲,这些步骤都可以在Notebook中完成,而且可以通过Amazon Step Functions监控每个任务的运行状态和日志记录,最终实现整个流程的自动化,减少数据科学家的人工重复工作,提高生产开发效率。

关于ETL流程的自动化,Amazon Glue也自带了Workflows方式来实现,和Amazon Step Functions相比较,Amazon Glue Workflows是编排内部作业和爬网程序,如果调用Amazon Glue之外的其他亚马逊云科技服务,需要使用Amazon Step Functions。

Amazon Glue Workflow和事件驱动的方式来实现ETL流程的自动化,可参考下边的链接:

如何使用Amazon Glue工作流在爬网程序运行完成时自动启动作业?

https://aws.amazon.com/cn/premiumsupport/knowledge-center/start-glue-job-after-crawler-workflow/?nc1=h_ls

如何使用Amazon Lambda函数在爬网程序运行完成时自动启动Amazon Glue作业?

https://aws.amazon.com/cn/premiumsupport/knowledge-center/start-glue-job-crawler-completes-lambda/?nc1=h_ls

7. 参考资料

[1]aws-step-functions-data-science-sdk-python

https://github.com/aws/aws-step-functions-data-science-sdk-python

[2]AWS Step Functions Data Science SDK – Compute

https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/compute.html


本篇作者

缪翰林

亚马逊云科技解决方案架构师

负责基于亚马逊云科技的方案咨询,设计和架构评估。在运维,DevOps方面有丰富的经验,目前侧重于大数据领域的研究。

听说,点完下面4个按钮

就不会碰到bug了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值