玩转智能数据湖DAYU,开发一个实时豆瓣评分Top20电影脚本
企业数字化转型核心就是在对自身数据深度认知的基础之上,管好数,用好数。然而这其实是一个非常不容易的过程,它面临着三道急需跨越的鸿沟:数据孤岛、对数据缺乏有序的管理、缺乏系统的安全管理。
面向企业数字化转型,华为云打造了融合、开放的云化数据运营平台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所示。
● ratings.csv
保存电影评分,包含用户ID、电影ID、评分(0~5)、评分时间。部分数据如表2所示。
2、将movies.csv、ratings.csv两个原始数据上传至OBS桶,例如“s3a://obs-movies”,后续DAYU和DLI将直接对OBS桶中的数据进行处理。
创建DLI数据连接、数据库、数据表
用户可以通过DLI或DLF编辑器执行SQL来创建数据表,本文以使用DLF编辑器为例。
首先,创建一个DLF到DLI的连接,数据连接名称为“dli”。
然后创建一个数据库,用于存放数据表,数据库名称为“movies”。
再创建一个DLI SQL脚本,通过SQL语句来创建数据表。
其中,movie、rating为OBS表,数据存储在OBS中,两张表用于存放原始数据。
top_rating_movie、top_active_movie为DLI表,两张表用于存放分析结果。
创建DLI SQL脚本top_rating_movie
创建这个脚本是用于存放评分最高的Top20电影。
评分最高Top20电影的计算方法是:先计算出每部电影的总评分和参与评分的用户数,过滤掉参与评分的用户数小于100的记录,返回电影名称、平均评分和参与评分用户数。
图:脚本(评分最高Top20电影)
脚本调试无误后,我们需要保存该脚本,脚本名称为“top_rating_movie”。在后续DLF作业开发和作业调度引用该脚本。
创建DLI SQL脚本top_active_movie
这个脚本则用于存放最活跃的Top20电影。
最活跃Top20电影的计算方法是:平均评分大于3.5中用户评分数最多的20部电影。
创建和开发一个DLI SQL脚本,从movie和rating表中计算出最活跃的Top20电影,将结果存放到top_active_movie表。
图:脚本(分析最活跃Top20电影)
同样的,脚本调试无误后,我们需要保存该脚本,脚本名称为“top_active_movie”。在后续DLF作业开发和作业调度引用该脚本。
DLF作业开发和作业调度
假设“movie”和“rating”表是实时变动的,我们希望每天更新Top20电影,那么这里可以使用DLF作业编排和作业调度功能。
1、创建一个DLF空作业,作业名称为“topmovie”。
2、然后进入到作业开发页面,拖动Dummy和DLI SQL节点到画布中,连接并配置节点的属性。
关键说明:
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的监控界面、邮件通知、短信通知进行了解。以下展示如何进入监控界面查看执行结果。
图:查看作业执行情况
一个基于DAYU和DLI的一站式大数据业务开发就这样搞定了。
总结:
DAYU的数据开发是一个一站式的大数据协同开发平台,提供数据建模、数据集成、脚本开发、作业调度、运维监控等多项功能。
其中,数据建模支持EI多个云服务,集成批量数据迁移,可以支持30多种数据源之间的迁移。
脚本开发提供SQL和Shell脚本开发能力,在线开发,简单方便。
作业调度支持多种云服务的多种类型的任务混合编排,高性能的调度引擎已经经过几百个应用的检验。提供活动的作业监控,还支持按需要的资源调度来降低用户使用大数据平台的成本。
看完文章是否跃跃欲试, 现在1元即可体验华为云的智能数据湖运营平台,动手做一个今年评分Top20电影脚本,还可参与抽奖。
备注:具体实践过程参考自博文《一站式大数据业务开发》
- 点赞
- 收藏
- 关注作者
评论(0)