亚马逊AWS官方博客

AWS Glue DataBrew 正式发布 – 助您快速实现数据清洗与规范化的可视数据准备工具

Original URL: https://aws.amazon.com/cn/blogs/aws/announcing-aws-glue-databrew-a-visual-data-preparation-tool-that-helps-you-clean-and-normalize-data-faster/

为了运行分析、生成报告或应用机器学习,我们需要保证所使用的数据内容清洁、格式正确。作为数据准备过程中的重要步骤,数据分析师与数据科学家们需要为此编写自定义代码并执行大量手动操作。首先,大家需要查看数据、了解存在哪些可能的值,而后构建一些简单的可视化效果以了解各列之间是否存在相关性。接下来,您还需要检查超出预期范围的奇异值,例如超过40℃的异常气温或者超过300公里每小时的卡车时速等。数据缺失同样是需要关注的大问题。总之,很多算法需要将值重新定位至特定范围,例如0到1之间;或者围绕均值进行标准化。文本字段需要设置为标准格式,并且可能需要进行词干提取等高级转换。

其中需要大量工作。因此,我们高兴地宣布,AWS Glue DataBrew目前已正式上线。凭借这款可视化数据准备工具,您能够将数据清洗与规范化速度提升达80%,确保把更多精力投入到真正具有业务价值的工作当中。

DataBrew提供直观的界面,可快速接入存储在Amazon Simple Storage Service (S3)Amazon RedshiftAmazon Relational Database Service (RDS)内的数据,JDBC可访问数据存储或者由AWS Glue Data Catalog索引的数据。在此之后,您可以浏览数据、查找模式并执行转换。例如,您可以使用joins与pivots,合并不同数据集或使用函数实现数据操纵。

在数据准备就绪之后,您可以立即将其与AWS或者第三方服务结合使用,进而获取更多洞见结论,例如用于机器学习的Amazon SageMaker、用于分析的Amazo Redshift与Amazon Athena,以及用于商务智能的Amazon QuickSight与Tableau等。

AWS Glue DataBrew如何运作

要使用DataBrew进行数据准备,须完成以下操作步骤:

  • 从Amazon S3或者AWS Glue数据目录(S3、Redshift、RDS)中接入一个或多个datasets(数据集)。您也可以通过DataBrew控制台,将本地文件上传至S3。目前DataBrew支持CSV、JSON、Parquet以及XLSX格式。
  • 创建project(项目)以直观探索、理解、组合、清洗及规范化数据集内的数据。您可以merge或join多个数据集。在控制台中,您可以使用值分布、直方图、盒状图以及其他可视化形式快速发现数据中的异常。
  • 通过在profile视图中运行作业,您可以为数据集生成包含40多项统计信息的丰富数据概况。
  • 在选定一个列后,您会获得recommendations(建议)以了解如何改善数据质量。
  • 您可以使用超过250种内置清洗转换及规范化数据。例如,您可以删除或替换空值,或者创建编码等。每项转换都会被自动添加以构建recipe。
  • 接下来,您可以保存、发布及版本化recipes,并对所有传入数据应用此recipes完成数据准备任务。要将recipes应用于大型数据集,或者为大型数据集生成概况,您可以运行jobs(作业)。
  • 在任意时间点上,您都可以直观跟踪并探索数据集如何与项目、recipes以及作业运行相链接。以此为基础,您能够了解数据如何流动以及发生了哪些变化。这部分信息被称为data lineage(数据沿袭),可用于在发生输出错误时帮助您找到根本原因。

下面,我们通过快速演示共同了解整个具体流程。

使用AWS Glue DataBrew准备一个样本数据集

在DataBrew控制台中,我们选定Projects选项卡,而后选择Create project。这里我们将新项目命名为Comments,同时创建一个新的recipe并通过之后的数据转换对其进行自动更新。

这里选择 New dataset 并将其命名为 Comments

接下来,选择Upload file,并在下一对话框中上传已经为本次演示准备好的comments.csv文件。在生产用例当中,您可能会选择接入S3或Glue数据目录中的现有源。但在本演示中,我们直接指定用于存储上传文件的S3目标。另外,这里禁用掉Encryption加密选项。

这里的comments.csv文件很小,但足以帮助大家了解常见的数据准备需求,以及如何使用DataBrew快速完成准备过程。该文件的格式为以逗号分隔的值(CSV)。第一行包含各列的名称。接下来的各行包含一条文本评论(comment)外加一条数字评分(rating),具体内容为客户(customer_id)及其条目评分(item_id)。每个条目都属于一种类型(category)。在每条文本评论中,还有一项总体情感评价(comment_sentiment)。作为可选项,客户可以在发表评论时启用标记以要求联系服务人员获取更多支持(support_needed)。

下面来看comments.csv文件的具体内容:

customer_id,item_id,category,rating,comment,comment_sentiment,support_needed
234,2345,"Electronics;Computer", 5,"I love this!",Positive,False
321,5432,"Home;Furniture",1,"I can't make this work... Help, please!!!",negative,true
123,3245,"Electronics;Photography",3,"It works. But I'd like to do more",,True
543,2345,"Electronics;Computer",4,"Very nice, it's going well",Positive,False
786,4536,"Home;Kitchen",5,"I really love it!",positive,false
567,5432,"Home;Furniture",1,"I doesn't work :-(",negative,true
897,4536,"Home;Kitchen",3,"It seems OK...",,True
476,3245,"Electronics;Photography",4,"Let me say this is nice!",positive,false

 

Access permissions 当中,我们选择一个AWS身份与访问管理(IAM)角色,由其向DataBrew提供对输入S3存储桶的读取权限。DataBrew控制台中仅显示出以DataBrew为信任策略服务主体的角色。要在IAM控制台内创建新角色,请将DataBrew选定为受信实体。

如果数据集很大,您也可以使用Sampling(采样)以限制项目中所使用的数据行数。这些行可以在数据集的起始端、结束端或者其他任意位置随机选择。您将使用这些项目创建recipes,而后在作业中将这些recipes应用于所有数据。根据数据集的实际情况,您可能无需访问所有行即可定义数据准备recipes。

作为可选项,您也可以使用Tagging对AWS Glue DataBrew创建的资源进行管理、搜索或者过滤。

整个项目准备过程大概需要几分钟,结束之后即可正常探索数据集。

Grid视图当中,即创建新项目的默认视图,我们会看到已经导入的数据。在每一列中,都包含所发现值范围的摘要信息。对于数字列,则给出了统计分布情况。

Schema视图中,我们可以深入研究推理出的schema,并据此选择隐藏某些列。

Profile视图中,我们可以运行数据概况分析作业以检查并收集关于数据的统计摘要。这是对数据结构、内容、关系以及派生情况的评估,能够帮助我们高效理解大型数据集中的数据情况。虽然本演示中的数据集很小、概况信息意义不大,但我们还是选择运行,并将概况作业的输出结果发送至用于存储源数据的同一S3存储桶内的另一个文件夹当中。

在概况分析作业完成之后,我们将看到数据集内各行及列的摘要、有效的列与行数,外加各列之间的相关性。

在这里,我们随机选择一列,例如rating。我们可以具体查看该列的特定统计信息以及相关性。

现在,我们来做一点更实际的数据准备工作。在Grid视图中,我们可以看到全部现有列。其中category包含两条信息,以分号分隔。例如,第一行的category为“Electronics;Computers”。我们选定该类别列,而后单击列操作(列名称右侧的三个小点),即可在这里访问适用于该列的转换操作。在本演示中,我们选择在单一分隔符上进行列拆分。在应用变更之前,大家还可以在控制台内快速预览转换结果。

使用分号作为分隔符,现在我们就有了两列,category_1category_2。接下来,再次使用列操作将二者重新命名为categorysubcategory。现在,我们的第一行category中就包含有Electronics以及subcategory Computers。所有这些变更都以步骤的形式被添加至项目recipe当中,我们可以随时将其应用于其他相似数据。

其中rating列包含的值在1到5之间。对于大多数算法,我更倾向于将这些植进行标准化。在列操作中,我们使用min-max normalization将值转换为0到1之间。当然,您也可以使用更高级的其他技术,例如均值或Z分数归一化。完成之后,将新增一个rating_normalized列。

我研究了DataBrew对于列comment的建议。由于注释为文本形式,因此建议要求使用标准的大小写格式,例如全小写、全大写或者正常句式。这里选择lowercase全小写。

注释当中包含客户撰写的任意文本。为了简化进一步分析,我们在该列上使用word tokenization以删除停用词(例如「a」、「an」、「the」等),扩展缩写(例如将「don’t」扩展为「do not」),并进行词干提取。变更完成后将生成一个新列,即comment_tokenized

这个comment_tokenized列当中仍然包含某些特殊字符,例如表情符号-(等。在列操作中,我们选择Clean与remove special characters。

我还查看了关于comment_sentiment列的建议。系统认为其中存在某些missing values缺失值。我决定使用neutral情感来填补掉某些缺失的值。完成之后,就只剩下大小写不一致问题了,我决定在此列中使用lowercase全小写格式。

现在的comment_sentiment列共包含三种不同的值(positivenegative或者neutral),但大多数算法倾向于使用一键编码,其中每个可能的值为一列,若符合原始值则表示为1、不符合则表示为0。这里在菜单栏中选择Encode图标,而后点击One-hot encode column。我在这里保留所有默认设置并应用,从而为三个可能值添加三个新列。

其中support_needed列被识别为boolean,而且其值会被自动格式化为标准格式。这里我们不需要进行任何操作。

我的数据集recipe也已经准备好可以随时published,并可在类似的数据处理作业中重复使用。虽然演示中的数据量不大,但该recipe完全可以在更大的数据集内发挥作用。

在recipe中,您可以找到我刚刚应用的所有转换清单。在运行recipe job时,输出数据可在S3中使用,配合分析与机器学习平台使用,或者通过商务智能工具创建报告与可视化结果。您也可以使用与输入格式不同的其他格式生成新的输出,例如使用Apache Parquet等columnar storage列存储格式。

现已上线

AWS Glue DataBrew目前已经在美国东部(北弗吉尼亚州)、美国东部(俄亥俄州)、美国西部(俄勒冈州)、欧洲(爱尔兰)、欧洲(法兰克福)、亚太地区(东京)、亚太地区(悉尼)等区域上线。

DataBrew的出现让您为分析、机器学习乃至商务智能应用进行的数据准备工作变得无比简单。以此为基础,您可以专注于为企业建立正确洞见,彻底摆脱需要自主编写、后续维护并不断更新的自定义代码。

要使用DataBrew进行演练,您可以创建一个新项目并选择本文提供的示例数据集。以此为基础,您将快速了解DataBrew中的可用功能以及如何将其实际应用于数据素材。

关于AWS Glue DataBrew的更多详细信息,请立即体验

 

本篇作者

Danilo Poccia

Danilo与不同规模的初创公司及企业合作,致力于支持各类创新活动。在担任Amazon Web Services公司首席布道师(欧洲、非洲与中东地区)期间,他运用自己的丰富经验帮助客户将想法转变为现实,专注于无服务器架构与事件驱动型编程,同时也积极关注机器学习与边缘计算对于技术及业务的影响。他还著有《AWS Lambda in Action from Manning》。