华为云DLI服务开发与应用_tyt2023

发布时间 2023-12-27 12:44:04作者: 打杂滴

本实验基于DLI环境,以车联网场景驾驶行为数据分析、电商BI报表分析为案例,提供了完整的端到端最佳实践内容,帮助您更好的使用DLI进行大数据分析和处理。

购买OBS服务

“产品->存储->对象存储服务 OBS”进入OBS页面。

点击“管理控制台”

 选择“桶列表->创建桶”

 

区域:华北-北京四

桶名称:dli-demo(由于OBS中不允许有相同桶名,故可添加其他信息)

数据冗余存储策略:单AZ存储

其他配置项默认即可,点击“立即创建”

 点击桶名,进入新建的桶

 

打开实验桌面的“Xfce终端”通过如下命令下载实验数据至实验桌面。

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220726/detail-records.tar.gz -O /home/user/Desktop/detail-records.tar.gz

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220726/order-records.tar.gz -O /home/user/Desktop/order-records.tar.gz

解压实验数据

cd /home/user/Desktop
tar -vxf detail-records.tar.gz
tar -vxf order-records.tar.gz

桌面上将显示detail-records、order-records两个文件夹

 

在OBS桶中,点击“对象->上传对象”,将detail-records、 order-records文件夹上传到OBS桶根目录。

将桌面两个文件夹拖入如下上传区即可。

 

购买DLI队列

点击华为云官网左上角的图标回到首页,点击“产品->大数据->数据湖探索 DLI”进入DLI页面

 实验-使用DLI进行车联网场景驾驶行为数据分析

场景任务

根据已有的某货运公司车辆定时上报的详单数据和货运订单数据,DLI可以完成对该货运公司车辆行驶特点分析、记录明细的查询。

车辆上报的详单数据,包括定时上报的位置记录和异常的驾驶行为触发的告警事件数据。

 

订单数据

订单数据记录了货运订单相关的信息。

 

 

分析数据

使用DLI对待分析的数据进行查询

创建数据库

在Console页面上方菜单栏中单击“产品”,单击“大数据”分类中的“数据湖探索 DLI”。

在DLI控制台总览页面左侧,单击“SQL编辑器”,进入SQL作业编辑器页面,点击否。

在SQL作业编辑器左侧,选择“数据库”页签,单击 创建demo数据库。

 

 

创建数据表detail_records

 

create table detail_records(
driverID String,
carNumber String,
latitude double,
longitude double,
speed int,
direction int,
siteName String,
time timestamp,
isRapidlySpeedup int,
isRapidlySlowdown int,
isNeutralSlide int,
isNeutralSlideFinished int,
neutralSlideTime long,
isOverspeed int,
isOverspeedFinished int,
overspeedTime long,
isFatigueDriving int,
isHthrottleStop int,
isOilLeak int) USING CSV OPTIONS (PATH 'obs://xxx/detail-records/');

注意:“PATH 'obs://xxx/detail-records/'”中的xxx应改为实际所创建的obs桶名称

单击“执行”,创建详单表detail_records。

创建数据表event_records

删除之前SQL语句,并执行以下SQL语句,在demo数据库下创建告警事件表event_records。

create table event_records(
driverID String,
carNumber String,
latitude double,
longitude double,
speed int,
direction int,
siteName String,
time timestamp,
isRapidlySpeedup int,
isRapidlySlowdown int,
isNeutralSlide int,
isNeutralSlideFinished int,
neutralSlideTime long,
isOverspeed int,
isOverspeedFinished int,
overspeedTime long,
isFatigueDriving int,
isHthrottleStop int,
isOilLeak int)

删除之前SQL语句,并执行以下SQL语句,将告警事件数据从详单中抽取出来插入到event_records表中。

insert into table event_records
(select *
from detail_records
where isRapidlySpeedup > 0
OR isRapidlySlowdown > 0
OR isNeutralSlide > 0
OR isNeutralSlideFinished > 0
OR isOverspeed > 0
OR isOverspeedFinished > 0
OR isFatigueDriving > 0
OR isHthrottleStop > 0
OR isOilLeak > 0)

删除之前SQL语句,并查询event_records表中的数据

select * from event_records;

4创建数据表order_records

使用另一种方式创建订单表order_records。

在SQL作业编辑器左侧,选择“数据库”页签,单击数据库“demo”,单击表菜单右边的加号,创建表,数据位置选择DLI。

 创建订单表

 

列名和类型分别为:

orderNumber / string

driverID / string

carNumber / string

customerID / string

sourceCity / string

targetCity / string

expectArriveTime / timestamp

time / timestamp

action / string

 

将OBS数据导入到order_records表。

单击order_records表对应“操作”列中的“更多 -> 导入”。

队列:dli

数据格式:CSV

数据源路径为:obs://xxx/order-records/

注意:“obs://xxx/order-records/”中的xxx应改为实际所创建的obs桶名称

 

 

参数配置完成后单击“确定”,导入表数据。

查询order_records表中的数据

select * from order_records;

执行查询

2.4.1查询所有司机在某段时间的异常告警事件进行统计。

select
driverID,
carNumber,
sum(isRapidlySpeedup) as rapidlySpeedupTimes,
sum(isRapidlySlowdown) as rapidlySlowdownTimes,
sum(isNeutralSlide) as neutralSlideTimes,
sum(neutralSlideTime) as neutralSlideTimeTotal,
sum(isOverspeed) as overspeedTimes,
sum(overspeedTime) as overspeedTimeTotal,
sum(isFatigueDriving) as fatigueDrivingTimes,
sum(isHthrottleStop) as hthrottleStopTimes,
sum(isOilLeak) as oilLeakTimes
from
event_records
where
time >= "2017-01-01 00:00:00"
and time <= "2017-02-01 00:00:00"
group by
driverID,
carNumber
order by
rapidlySpeedupTimes desc,
rapidlySlowdownTimes desc,
neutralSlideTimes desc,
neutralSlideTimeTotal desc,
overspeedTimes desc,
overspeedTimeTotal desc,
fatigueDrivingTimes desc,
hthrottleStopTimes desc,
oilLeakTimes desc

在查询结果中,单击

 

查询某个司机在某个时间段的详细记录

 

select
*
from
event_records
where
driverID = "panxian1000005"
and time >= "2017-01-01 00:00:00"
and time <= "2017-02-01 00:00:00"

“结果图形化”:

图形类型:柱状图

X轴:driverID

Y轴:speed

结果数目:10

 

根据司机和发车时间信息查询司机的详细行驶特点。

select driverID, carNumber, latitude, longitude, siteName, time from detail_records where driverID = "panxian1000005" and time > "2017-01-30 16:00:00" and siteName IS NOT NULL order by time desc

“结果图形化”:

图形类型:柱状图

X轴:time

Y轴:latitude

结果数目:10

 

 使用DLI进行电商BI报表分析

场景方案

某商城作为中国一家自营式电商,在保持高速发展的同时,沉淀了数亿的忠实用户,积累了海量的真实数据。如何利用BI工具从历史数据中找出商机,是大数据应用在精准营销中的关键问题,也是所有电商平台在做智能化升级时所需要的核心技术。

本案例以某商城真实的用户、商品、评论数据(脱敏后)为基础,利用华为云数据湖探索、数据仓库服务以及BI来分析用户和商品的各种数据特征,可为营销决策、广告推荐、信用评级、品牌监控、用户行为预测提供高质量的信息。

用户数据

 商品数据

 评价数据

 行为数据

 

下载实验数据并上传OBS

打开实验桌面的“Xfce终端”通过如下命令下载实验数据至实验桌面

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220810/user_data.csv -O /home/user/Desktop/user_data.csv

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220810/comment_data.csv -O /home/user/Desktop/comment_data.csv

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220810/action_data.csv -O /home/user/Desktop/action_data.csv

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20220810/product_data.csv -O /home/user/Desktop/product_data.csv

将桌面四个文件拖入如下OBS上传区即可完成上传工作。

 

创建数据表user

选择实验2.3.1创建的demo数据库,在编辑框中输入以下SQL语句:

create table user(
user_id int,
age int,
sexuality int,
rank int,
register_time string
) USING CSV OPTIONS (PATH 'obs://xxx/user_data.csv');

PATH 'obs://xxx/user_data.csv'中的xxx应改为实际所创建的obs桶名称

用相同的方法创建商品表,评价表,行为表

create table product(
product_id int,
a1 int,
a2 int,
a3 int,
category int,
brand int
) USING CSV OPTIONS (PATH 'obs://xxx/product_data.csv');

create table comment(
deadline string,
product_id int,
comment_num int,
has_bad_comment int,
bad_comment_rate float
) USING CSV OPTIONS (PATH 'obs://xxx/comment_data.csv');

create table action(
user_id int,
product_id int,
time string,
model_id string,
type string
) USING CSV OPTIONS (PATH 'obs://xxx/action_data.csv');

创建完成后点击“刷新”,可以看到如下四张表

分析出10大用户点赞数最多的产品

SELECT
product.brand as brand,
COUNT(product.brand) as like_count
from
action
JOIN product ON (action.product_id = product.product_id)
WHERE
action.type = 'like'
group by
brand
ORDER BY like_count desc
limit 10

“结果图形化”

图形类型:柱状图

X轴:brand

Y轴:like_count

结果数目:10

分析出10大评级最差的商品

SELECT
DISTINCT product_id,
comment_num,
bad_comment_rate
from
comment
where
comment_num > 3
order by
bad_comment_rate desc
limit
10

“结果图形化”

图形类型:柱状图

X轴:product_id

Y轴:bad_comment_rate

结果数目:10