玩转智能数据湖DAYU,开发一个实时豆瓣评分Top20电影脚本

举报
技术火炬手 发表于 2020/10/30 14:58:15 2020/10/30
【摘要】 企业数字化转型核心就是在对自身数据深度认知的基础之上,管好数,用好数。然而这其实是一个非常不容易的过程,它面临着三道急需跨越的鸿沟:数据孤岛、对数据缺乏有序的管理、缺乏系统的安全管理。

企业数字化转型核心就是在对自身数据深度认知的基础之上,管好数,用好数。然而这其实是一个非常不容易的过程,它面临着三道急需跨越的鸿沟:数据孤岛、对数据缺乏有序的管理、缺乏系统的安全管理。

面向企业数字化转型,华为云打造了融合、开放的云化数据运营平台DAYU,DAYU取名来自古代英雄大禹的名字谐音,寓意着管理、治理“数据”这一汪价值之水。

作为一个数据治理的平台,DAYU有着完善的数据资产管理体系。

下面,我们通过DLF(DAYU的数据开发模块)和数据湖探索DLI服务对电影评分的原始数据进行分析,输出评分最高和最活跃的Top20电影,开发者可以学习到脚本编辑、作业编辑、作业调度等功能,了解DAYU在数据治理上的特点。

操作流程如下:

1. 准备原始数据,并上传到OBS中。

2. 创建DAYU到DLI的数据连接,之后用户可以在DAYU界面中操作DLI,例如:创建数据库、创建数据表、分析数据。

3. 创建DLI SQL脚本,通过DLI SQL脚本可以创建数据表、分析数据。

4. 创建DAYU作业,通过编排作业和配置作业调度策略,定期执行DLI SQL脚本,使得用户可以每天获取到最新的Top20电影结果。

环境准备

已开通对象存储服务(OBS),并创建桶,例如“s3a://obs-movies”,用于存放原始数据和分析结果数据。

已开通数据湖探索服务(DLI)。

数据准备

1、获取原始数据(演示数据来自:https://grouplens.org/datasets/movielens/),并保存为csv格式的文件。原始数据说明如下:

● movies.csv

   保存电影的基本信息,包含电影ID、名称、类型。部分数据如表1所示。

image.png

● ratings.csv

   保存电影评分,包含用户ID、电影ID、评分(0~5)、评分时间。部分数据如表2所示。 

image.png

2、将movies.csv、ratings.csv两个原始数据上传至OBS桶,例如“s3a://obs-movies”,后续DAYU和DLI将直接对OBS桶中的数据进行处理。

创建DLI数据连接、数据库、数据表

用户可以通过DLI或DLF编辑器执行SQL来创建数据表,本文以使用DLF编辑器为例。

首先,创建一个DLF到DLI的连接,数据连接名称为“dli”。

image.png

然后创建一个数据库,用于存放数据表,数据库名称为“movies”。

再创建一个DLI SQL脚本,通过SQL语句来创建数据表。

其中,movie、rating为OBS表,数据存储在OBS中,两张表用于存放原始数据。

top_rating_movie、top_active_movie为DLI表,两张表用于存放分析结果。

创建DLI SQL脚本top_rating_movie

创建这个脚本是用于存放评分最高的Top20电影。

评分最高Top20电影的计算方法是:先计算出每部电影的总评分和参与评分的用户数,过滤掉参与评分的用户数小于100的记录,返回电影名称、平均评分和参与评分用户数。

image.png

图:脚本(评分最高Top20电影)

脚本调试无误后,我们需要保存该脚本,脚本名称为“top_rating_movie”。在后续DLF作业开发和作业调度引用该脚本。

创建DLI SQL脚本top_active_movie

这个脚本则用于存放最活跃的Top20电影。

最活跃Top20电影的计算方法是:平均评分大于3.5中用户评分数最多的20部电影。

创建和开发一个DLI SQL脚本,从movie和rating表中计算出最活跃的Top20电影,将结果存放到top_active_movie表。

image.png

图:脚本(分析最活跃Top20电影)

同样的,脚本调试无误后,我们需要保存该脚本,脚本名称为“top_active_movie”。在后续DLF作业开发和作业调度引用该脚本。

DLF作业开发和作业调度

假设“movie”和“rating”表是实时变动的,我们希望每天更新Top20电影,那么这里可以使用DLF作业编排和作业调度功能。

1、创建一个DLF空作业,作业名称为“topmovie”。

image.png

2、然后进入到作业开发页面,拖动Dummy和DLI SQL节点到画布中,连接并配置节点的属性。

image.png

关键说明:

  • Begin(Dummy节点):不执行任何操作,只作为起始点的标识。

  • top_rating_movie(DLI SQL节点):在节点属性中,关联创建DLI SQL脚本top_rating_movie(用于存放评分最高的Top20电影)中开发完成的DLI SQL脚本“top_rating_movie”。

  • top_active_movie(DLI SQL节点):在节点属性中,关联创建DLI SQL脚本top_active_movie(用于存放最活跃的Top20电影)中开发完成的DLI SQL脚本“top_active_movie”。

3、然后测试运行作业。如果日志运行正常,单击画布空白处,在右侧的“调度配置”页面,配置作业的调度策略。

4、最后我们需要保存作业,并执行调度作业。实现作业每天自动运行,Top20电影的结果自动保存到“top_active_movie”和“top_rating_movie”表。

监控作业执行情况

用户如果需要及时了解作业的执行结果是成功还是失败,可以通过DLF的监控界面、邮件通知、短信通知进行了解。以下展示如何进入监控界面查看执行结果。

image.png

图:查看作业执行情况

一个基于DAYU和DLI的一站式大数据业务开发就这样搞定了。

总结:

DAYU的数据开发是一个一站式的大数据协同开发平台,提供数据建模、数据集成、脚本开发、作业调度、运维监控等多项功能。

其中,数据建模支持EI多个云服务,集成批量数据迁移,可以支持30多种数据源之间的迁移。

脚本开发提供SQL和Shell脚本开发能力,在线开发,简单方便。

作业调度支持多种云服务的多种类型的任务混合编排,高性能的调度引擎已经经过几百个应用的检验。提供活动的作业监控,还支持按需要的资源调度来降低用户使用大数据平台的成本。

看完文章是否跃跃欲试, 现在1元即可体验华为云的智能数据湖运营平台,动手做一个今年评分Top20电影脚本,还可参与抽奖。

备注:具体实践过程参考自博文《一站式大数据业务开发》

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。