【数据湖案例】一站式大数据库业务开发
如果你已经申请MRS、DLI、DWS等大数据产品,接下来的时间里,你会希望将在大数据服务上快速运行业务,数据湖工厂(DLF)是一个在线一站式大数据开发平台,协助用户业务快速上云。本文利用数据湖工厂(DLF)、数据湖探索(DLI)对电影评分原始数据进行分析,输出评分最高和最活跃TOP 20电影。通过本文可以学习到DLF脚本编辑、作业编辑、作业调度等功能,以及DLI的SQL基本语法。
数据湖工厂(Data Lake Factory)提供一站式的大数据协同开发平台,帮忙用户轻松完成数据建模,数据集成,脚本开发,作业调度,运维监控等多项任务,可以极大降低用户使用大数据的门槛,帮助用户快速构建大数据处理中心。
数据准备
演示数据来自https://grouplens.org/datasets/movielens/,为了方便演示,保存在本文附件中。请将附件中的数据上传到OBS桶中,后面DLF和DLI直接对桶中的数据做处理。
原始数据说明
movies.csv保存电影基本信息,字段:电影ID、名称、流派
ratings.csv保存电影评分,字段:用户ID、电影ID、评分、评分时间,评分取值范围:0~5
创建数据库表
我们需要创建movie和rating两张表存放原始数据,另外创建top_rating_movie和top_active_movie存放分析结果,即评分最高和最活跃TOP 20电影。
创表SQL可以使用DLI或DLF的编辑器执行,下面使用DLF编辑器执行SQL。
首先需要创建一个DLF到DLI的连接。
接着在“数据开发”创建一个SQL脚本,打开脚本编辑器。
输入以下创表语句创建4个表。
create table movie(movieId int,title varchar(256),genres varchar(256)) using csv options (path 's3a://obs-movies/movies.csv'); create table rating(userId int,movieId int,rating float,rating_date long) using csv options (path 's3a://obs-movies/ratings.csv'); create table top_rating_movie(title varchar(256),avg_rating float,rating_user_number int); create table top_active_movie(title varchar(256),avg_rating float,rating_user_number int); |
说明
movie和rating是OBS表,数据存储在obs上,top_rating_movie和top_active_movie是DLI表,存储分析结果。
movie和 rating表创建成功后,可以使用SELECT语句查询obs文件s3a://obs-movies/movies.csv和s3a://obs-movies/ratings.csv上的数据。
分析数据
分别创建SQL脚本,从movie和rating表中计算出评分最高和最活跃TOP 20电影,将结果存在放到top_rating_movie和top_active_movie表。
计算top_rating_movie脚本内容
insert overwrite table top_rating_movie from from |
这个SQL先一个子SELECT语句对rating表按movieId计算出每部电影的总评分和用户评分数。将子SELECT语言和movie做join查询,过滤掉用户评分数小于100的记录,然后返回电影名称、平均评分和用户评分数,最后将结果保存到表top_rating_movie。
计算top_active_movie脚本内容
insert overwrite table top_active_movie from from |
最活跃TOP20电影计算方法是平均评分大于3.5用户评分数最多20部电影。
每天定时刷新TOP20数据
我们假设movie和rating表实时在变动的,所以希望每天更新TOP20电影;这里可以使用DLF作业编排和作业调度功能。
首先创建一个DLF作业
作业里面有一个Dummy节点和两个DLI SQL节点,两个DLI SQL节点各关联到计算评分最高和最活跃TOP20电影DLI SQL脚本(top_rating_movie和top_active_movie)。
编排完成后,点击“运行测试”,测试一下作业,运行日志如下。
如果日志显示运行正常后,配置作业调度策略。
配置策略:每天0点执行一次作业。完整完毕后,点击保存,然后点击提交作业,这样就好每天自动运行作业,自动将TOP 20电影保存到表(top_rating_movie和top_active_movie)了。
作业监控
作业每天是在自动运行的,对用户来说希望可以及时了解作业的执行结果是成功还是失败。用户可以通过DLF的作业监控界面、邮件通知、短信通知了解作业结果。
- 点赞
- 收藏
- 关注作者
评论(0)