立即使用
跨境电商
发布时间:3月前
957 106
亚马逊云服务下数据仓库的数据流设计与架构


本文最初发表于 Medium 博客,经原作者 Abhijit Patil 授权,InfoQ 中文站翻译并分享。在本文中,我们将介绍使用原生 AWS 服务构建 ETL 流程的众多设计之一,以及如何集成这些设计来构建端到端数据管道。


使用 XML 管理亚马逊商品的关系输入数据架构


AWS 数据流(ETL)

在上图中,它代表了数据管道的四个主要方面,即数据摄取(Data Ingestion,E)、数据转换(Data Transformation,T)、数据加载(Data Load,L)和服务(Service,S)。


数据摄取(E)

在将数据从企业内部摄取到 AWS S3 中,还有很多其他模式。在这个流程中,我们代表了使用 HTTP 接口摄取数据的模式之一。其他模式可以使用 AWS 数据迁移服务,详情可参阅:https://aws.amazon.com/cloud-data-migration/。


a. 文件上传器 API

HTTPs API 使用托管在 EC2 上的 Spring boot 应用程序来上传/下载数据。这支持数据的多部分上传。

你可以使用 Spring boot 框架来编写文件上传器 API,并将其托管在自动伸缩的 EC2 上。要创建 Java 服务器端的文件上传器程序,请参考这个简单指南:https://spring.io/guides/gs/uploading-files/。

要让这个应用程序更具弹性,你可以将 ELB 和 Amazon EC2 Auto Scaling 添加到应用程序前面。


b. 数据移动到 S3

一旦收到数据文件,应用程序将暂时把数据保存在 EBS 卷中,然后使用 AWS SDK,可以把它移动到 S3 存储桶(Staging)。当数据移动到 S3 时,将会引发 S3 事件。通过该事件,可以触发 Lambda 函数,然后通过调用 Step 函数来触发 ETL 工作流。

注:S3 staging 存储桶将主要保存从源接收的原始数据。


数据转换(T)

强烈建议将可能是各种格式(如 JASON、XML、CSV 或任何其他格式)的原始数据转换成统一的数据格式,如数据湖(Data Lake)中的 parquet 格式。这样就能使数据湖的数据的标准化。


将按照下列高级步骤进行数据转换:

在 Step 函数工作流中,所有 ETL 转换阶段将被定义,一旦数据通过 Lambda 函数登陆到 staging S3 存储桶,该工作流就会被触发。工作流的第一阶段将是日期控制检查或业务日期检查,这将使用 Lambda 来完成,它在内部访问 DynamoDB,该数据库将存储日期控制和假日日历表。在上图中用箭头 4、5 和 5a 表示。在执行任何数据操作之前,Step 函数(状态机)的第一步是检查文件的完整性,例如校验和检查、行计数检查等,然后调用 Glue Crawler(爬网程序)来更新 Glue Catalog 中的模式,以获得新的数据。Step 函数的第二步将调用 Glue 作业,该作业将从 S3 存储桶的 staging 层读取数据,并将其转换为 parquet 格式,然后将最终的 parquet 文件写入 S3 持久层(数据湖)存储桶中。

注:一旦所有处理完成,可以调用相同的 Lambda 函数来更新 DynamoDB 中工作流的状态。


数据加载(L)

数据加载是将数据从持久层(数据湖)S3 存储桶加载到 Redshift 中。Redshift 将作为数据仓库或数据集市使用,用于定义域数据模型。


将按照下列高级步骤进行数据加载:

在成功完成 Step 函数的第二步后,将触发 Step 函数的第三步。Step 函数的第三步将触发另一个 Glue 作业(Glue Python shell 作业),它将执行 SQL(来自 Artefact 的 S3 存储桶),将数据从 S3 存储桶复制到 Redshift 表中。一旦数据加载完成,Lambda 将更新 DynamoDB 中工作流的状态。

注:在 SQL 函数中,你可以使用所有的业务逻辑。对于其他需要复杂转换的用例中,你可以调用 Glue Job 并调用 Java/Scala 代码。


错误处理与服务集成

在这种方法中,我们创建了一个通用的 Lambda 函数,如果 Step 函数中的任何步骤失败,就会调用这个函数。然后这个 Lambda 函数更新 Dynamo DB 审计表的状态。该 Lambda 函数参考了 S3 代码 Artefact 存储桶中的代码。


在 DynamoDB 审计表中的每一次插入都会生成一个触发器,该触发器将调用通用错误处理 Lambda,而该触发器又可以调用内部的 API,以提出服务工单(service ticket)或发送关于任何失败/警告的电子邮件。


设计中使用的工具/服务

我们主要使用以下 AWS 原生服务来实现数据管道:


AWS Lambda、AWS Step 函数、AWS Glue Job、AWS DynamoDB、AWS Redshift、AWS CloudWatch 和 Amazon API Gateway。文中详细介绍了这些服务在数据管道设计中的作用。


总之,这是在 AWS 上实现数据管道的一种方法,通过设计和使用无服务器或托管服务的 AWS 原生服务,可以实现弹性。

开发优质客户,从阔象出海开始
免费、不限次查看真实采购商和供应商的贸易概述
免费试用
输入手机号
忘记密码
输入密码
AMY
alert_warn 该企业数据暂未公开
发现更多的优质采购商
请联系客服
专属热线:
官方邮箱:
AMY
立即扫码联系客服
开通高级版会员,畅享专属特权,海量贸易数据随意查看
新年享钜惠,6折福利迎新春,仅限前10位用户专享
年付5折 月付
时效
支付方式
费用
¥1608.00
收款信息
收款公司名: 重庆知站科技有限公司
收款账户: 50050122680000000033
开户行名称: 中国建设银行股份有限公司开州支行龙锦名都分理处
* 请务必在备注中注明购买物品明细:
温馨提示
1、 成功汇款后,请通过下方二维码联系客服,提供转账凭证、开通会员账号、领取发票
2、 线下汇款请直接向您在阔象出海的专属账户汇款。各种方式的到账时间一般为: 农行1-2天,跨行3-5天 (具体到账时间以银行的实际到账时间为准)
需要帮忙,请联系我们客服
为您提供帮助和支持
专属热线:
官方邮箱:
KF
立即扫码联系客服
支付
费用
¥1608.00
支付