

背景
最近几年,“数据湖”的概念突然甚嚣尘上,俨然成为继“大数据”后数据技术的最热的题材。抛开附在概念之上浮华的包装,所谓的数据湖无非是为了解决传统的数据技术存在的“信息孤岛”(information siloing)这一类问题。相较于数据仓库、数据集市等传统的方案,取而代之的“数据湖”提出了以任意规模存储所有结构化和非结构化数据的解决思路。这也意味着,我们在存储数据时无需先对数据进行结构化处理,而是以原始的方式保存全量的数据,并在此之上运行不同类型的分析,例如数据可视化、大数据批量处理、实时分析以及机器学习等操作,以帮助我们做出更好的业务决策。

挑战
正如上述所说,“数据湖”存储来自业务应用的关系数据,以及来自诸如移动应用、IoT 设备和社交媒体等的非关系数据。当捕获数据时,我们不会定义数据结构或 Schema。这意味着直到我们进行分析处理时,才需要按照特定的 Schema 来读取/写入数据,通常我们称其为读取型 Schema。这就引出了一个新的概念 -“数据整理”(Data Wrangling)。
数据整理,是指将数据从一种“原始”数据形式转换和映射到另一种特定格式的过程,目的是使其更适合和更有价值的各种后续处理,例如:数据分析。这个步骤包括对于数据的调整,可视化,聚合,训练统计模型以及许多其他*在用潜**途的处理。通常遵循一些常规的步骤,这些步骤首先从数据源(例如:S3 的存储桶)中提取原始格式的数据,使用算法(例如:排序等)“压缩”原始数据或将数据解析为预定义的数据结构,最后 将结果内容存放到数据接收器中,以供存储和将来使用。
看到这里,有人也许有这样的疑问:“数据整理” 与以往提到的“ETL” 有何不同?
数据整理 vs ETL

对于数据湖而言,其主要挑战是存储原始数据而不监督内容。对于使数据可用的数据湖,它需要有定义的机制来编目和保护数据。没有这些元素,就无法找到或信任数据,从而导致出现“数据沼泽”(Data Swamp)。满足更广泛受众的需求就需要数据湖具有管理、语义一致性和访问控制。事实上,这也就是“数据整理”对于数据湖的价值所在。缺乏有效的“数据整理”,数据湖则空有规模庞大的数据而缺乏真正的业务价值。同时,数据湖在处理数据时的“读取型Schema”的特点又决定了其不同于解决ETL的思路,无法使用简单的工具完成数据的整理。这就引出了我们今天的重点,一款开源的“数据整理”工具 – AWS Data Wrangler。
AWS Data Wrangler 是什么?
AWS Data Wrangler 是一款开源的 Python 程序包,其特色就在于将 Pandas 库的功能扩展到连接 DataFrame 和 AWS 数据相关的一系列服,例如:Amazon Redshift、AWS Glue、Amazon Athena、Amazon EMR、Amazon QuickSight 等。它建立在其他开源项目(例如 Pandas、Apache Arrow、Boto3、s3fs、SQLAlchemy、Psycopg2 和 PyMySQL)之上,并提供抽象功能来执行常规的 ETL 任务,例如从数据湖、数据仓库和数据库中加载/卸载数据。这里提到的开源项目/框架的简单介绍如下 –
- Pandas – 是一个快速、强大、灵活且易于使用的开源数据分析和操作工具,构建在Python编程语言之上
- Apache Arrow – 是一个用于内存数据的跨语言开发平台。它为平面和层次数据指定了一种标准的独立于语言的柱状内存格式
- Boto3 –是适用于Python的AWS SDK,提供了易于使用的面向对象的API,以及对AWS服务的低级访问
- s3fs – 允许Linux和macOS通过FUSE挂载S3存储桶
- SQLAlchemy – 是Python SQL工具箱和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性
- Psycopg2 – 是用于Python编程语言的PostgreSQL数据库适配器
- PyMySQL – 是一个基于PEP 249的纯Python 的MySQL客户端库
与其它同类型的工具相比,AWS Data Wrangler 更重要的一个特点是,它提供了连接数据库服务和AWS数据相关服务的能力。其支持的AWS数据服务有这些 –
- Amazon Redshift – AWS上托管的云数据仓库服务
- AWS Glue – AWS上完全托管的提取、转换和加载 (ETL) 服务
- Amazon Athena – 是一种交互式查询服务,使用标准 SQL 分析 Amazon S3 中的数据
- Amazon EMR - AWS托管的云大数据平台,可使用多种开放源代码工具处理大量数据,例如 Apache Spark、Apache Hive、Apache HBase、Apache Flink、Apache Hudi 和 Presto
- Amazon QuickSight – 是一项采用云技术的商业智能服务,创建和发布包含 ML Insights 的交互式仪表板
这个介绍应该让我们对这个项目有了一些了解。如果用一个更为简洁的方式来介绍这个项目,我更喜欢这样的表示 “Pandas on AWS”。关于这个项目更多的信息,可以访问Github 上的内容。
AWS Data Wrangler 的样例代码
我们用这一小段Python代码来演示一下Data Wrangler的特点 –

AWS Data Wrangler 的安装与使用场景
使用AWS Data Wrangler 的方式有很多种选择。我们既可以在独立的Python程序、Jupyter Notebook 中如同我们习以为常的Pandas 那样使用它。更重要的是我们可以在AWS 的服务中直接使用它。
独立Python 应用
在独立的Python应用场景下,AWS Data Wrangler的安装与其它Python库的安装与使用并无区别,我们可以通过pip工具直接安装。至于conda 的环境也可以用一条命令完成安装。
- Pypi (pip)的安装 pip install awswrangler
- Conda 下的安装 conda install -c conda-forge awswrangler
AWS Lambda
在AWS Lambda 下使用 AWS Data Wrangler 有一个简单的方法就是使用AWS Lambda Layer。我们可以通过这几个步骤完成安装 –
- 访问GitHub项目中Release的部分,然后*载下**与所需版本相关Layer的zip文件。目前已经提供了对Python 3.6、3.7、3.8 等几个版本的支持
- 然后转到AWS Lambda控制面板,打开Lambda Layer部分,单击创建Layer
- 设置名称和适当的Python版本,上传新*载下**的zip文件,然后按create创建Layer
- 最后,转到Lambda控制民办并选择使用新的Layer
这是一个在Lambda 中读取 PARQUET 文件的例子 –

AWS Glue Wheel
在AWS Glue中使用需要注意一点,AWS Data Wrangler 仅支持 Glue Python Shell,不支持 Glue PySpark。安装的步骤如下 –
- 转到GitHub的Release页面,并*载下**与所需版本相关的whl文件
- 将Wheel文件上传到Amazon S3的存储桶中
- 转到Glue Python Shell job,然后指向S3上新上传的文件
Amazon SageMaker Notebook/Jupyter Notebook
需要在Python 3 Notebook段落中运行此命令,然后确保在导入awswrangler软件包之前重新启动Jupyter的内核,使得awswrangler 生效。安装命令 –
!pip install awswrangler
Amazon SageMaker Notebook Lifecycle
打开SageMaker控制台,转到生命周期的部分,然后使用以下代码段为所有兼容的SageMaker内核配置AWS Data Wrangler –

EMR Cluster
虽然 AWS Data Wrangler 并不是分布式的库,但 AWS Data Wrangler 仍然是大数据管道的一个好帮手。
- 在集群配置下将Python 3配置为PySpark的默认解释器

- 将bootstrap脚本保存在S3上,并在EMR集群上引用它

AWS Data Wrangler这个项目自2019年出现至今,版本已经迭代发展到了1.6.1,项目在Github上获得的Star 数量达到了811。这足以证明项目的活力以及受关注的程度。当然,数据湖的建设是复杂而充满挑战的,肯定不是一两个工具能够一蹴而就的。不可否认的一点,数据湖没有简单的范式,需要大量的针对数据的定制开发的工作,而这正是AWS Data Wrangler 可以大展身手的地方。

* 本篇文章引用自 AWS Blog,内容观点仅供交流使用,不做任何商业用途,如有侵权请联系删除。

About Us

上海-亚马逊AWS联合创新中心
“上海-亚马逊AWS联合创新中心”由上海市经信委、上海市静安区政府、亚马逊AWS共同成立,该中心位于上海市静安区市北高新园区云立方。

在这里,入驻企业将获得 AWS 云服务抵扣券、技术认证培训补贴、AWS 一对一技术支持、一站式云技术服务。
在这里,入驻企业将享受最长12个月的免费共享办公空间、专项资金补贴、*款贷**申请渠道、*款贷**贴息、投资人诊脉、投融资机构对接。
在这里,入驻企业将拥有战略咨询、政策专家辅导、人才推介、工商财务服务、品牌展示、媒介推广、项目路演和推介等一系列服务。