kylin测试案例
- 测试建表(事实表)
drop table dws_pv_se;
create table dws_pv_se(
guid string,session_id string,pv_cnt int,device_type string,
province string,city string,region string,dtstr string,
page_id string,duration bigint
)
partitioned by (dt string)
row format delimited fields terminated by ','
;
- 事实表 测试数据如下
g01,s01,6,mi8,北京,北京,昌平区,2020-08-17,p01,300
g01,s02,8,mi8,北京,北京,昌平区,2020-08-17,p02,200
g02,s03,6,mi6,河北,石家庄,天心区,2020-08-17,p01,320
g01,s04,16,mi8,北京,北京,昌平区,2020-08-17,p01,300
g03,s05,20,mate7,河北,石家庄,天心区,2020-08-17,p03,180
g03,s06,6,mate7,河北,石家庄,天心区,2020-08-17,p04,260
g04,s07,12,iphone8,河北,保定,秀贤区,2020-08-17,p05,300
g04,s08,7,iphone8,河北,保定,秀贤区,2020-08-17,p04,300
g04,s09,14,iphone8,河北,保定,秀贤区,2020-08-17,p03,300
g05,s11,10,mate7,北京,北京,朝阳区,2020-08-17,p02,200
g05,s12,11,mate7,北京,北京,朝阳区,2020-08-17,p06,350
g06,s13,23,mi8,上海,上海,闵行区,2020-08-17,p01,600
g06,s14,32,mi8,上海,上海,闵行区,2020-08-17,p06,400
g07,s15,9,iphone8,上海,上海,闵行区,2020-08-17,p06,400
g08,s16,10,mi6,上海,上海,徐汇区,2020-08-17,p06,480
g01,s31,10,mi8,北京,北京,昌平区,2020-08-18,p01,300
g01,s32,22,mi8,北京,北京,昌平区,2020-08-18,p02,200
g02,s33,25,mi6,河北,石家庄,天心区,2020-08-18,p01,320
g02,s34,20,mi6,河北,石家庄,天心区,2020-08-18,p04,320
g10,s35,26,mate7,河北,石家庄,天心区,2020-08-18,p03,180
g10,s36,30,mate7,河北,石家庄,天心区,2020-08-18,p05,260
g04,s37,17,iphone8,河北,保定,秀贤区,2020-08-18,p02,300
g04,s20,20,iphone8,河北,保定,秀贤区,2020-08-18,p04,300
g04,s21,38,iphone8,河北,保定,秀贤区,2020-08-18,p03,300
g09,s22,20,mate7,北京,北京,朝阳区,2020-08-18,p02,200
g09,s23,40,mate7,北京,北京,朝阳区,2020-08-18,p06,350
g06,s24,20,mi8,上海,上海,闵行区,2020-08-18,p01,600
g06,s25,32,mi8,上海,上海,闵行区,2020-08-18,p06,400
g07,s26,13,iphone8,上海,上海,闵行区,2020-08-18,p05,400
g08,s27,20,mi6,上海,上海,徐汇区,2020-08-18,p06,480
- 导入数据
load data local inpath '/root/pvs1.txt' into table dws_pv_se partition (dt = '2020-08-17');
load data local inpath '/root/pvs2.txt' into table dws_pv_se partition (dt = '2020-08-18');
- 测试建表(维度表)
create table dim_page(page_id string,page_type string,pindao string)
row format delimited fields terminated by ','
;
- 维度表 测试数据如下:
p01,detail,日化
p02,recommend,新品
p03,activity,好货
p04,activity,好货
p05,detail,家电
p06,detail,家电
p07,detail,视频
-
查询示例
select
pindao,count(distinct guid) as uv
from dws_pv_se p join dim_page d on p.page_id=d.page_id
group by d.pindao
select
pindao,sum(pv_cnt) as pv_amt
from dws_pv_se p join dim_page d on p.page_id=d.page_id
group by d.pindao
select
pindao,sum(pv_cnt) as pv_amt
from pvs_cube p join dim_page d on p.page_id=d.page_id
group by d.pindao
构建project
添加数据源
构建模型
1、起名
2、选择主表维表
‘
3、添加关联条件
4、选择维度指标(地域、手机类型、食啊)
5、选择度量指标(与4维度指标不能重复)
6、选择分区字段
创建cube
1、cube名字、指定模型
2、选择维度指标(derived类型为衍生类型,这样的字段不会被维度组合,维度优化的一种方式)
3、构建分析度量项
4、设置segment的合并规则(一般来说 一个sagment根据partition来分,也就是一天一个,所以默认7个sagment和成一个,然后连续的28个sagment合成一个)
5、减枝优化
- 使用聚合组
将不同维度划分为不同主题比如,主题 1 ——聚合组 1 :设备类型,操作系统,系统版本,网络类型主题 2 ——聚合组 2 :广告平台,广告系列,广告位置主题 3 ——聚合组 3 :频道,栏目,页面主题 4 ——聚合组 4 :国家,省,市,区
- 使用必选维度
因为每个要预计算的 cuboid 中必须包含设置的“必选维度”,也会成倍降低 cuboid 组合数
- 使用层级维度
设置了层级维度,比如:省,市,区Cuboid 就只会有:(省) (省市) (省市区)成倍降低了 cuboid 个数 DOIT 北京多易教育科技有限公司
- 使用联合维度
一般针对 “一对一” 的维度字段,比如device_type_id,device_type_nameLanmu_id ,lanmu_name那么,在预计算 cuboid 时,“ device_type_id,device_type_name ”必须同时出现
- Hbase RowKey设计
- 这个可以将两个 组中的维度强行合在一起计算
- 计算引擎,mr好一些 稳定
- 组织hbase列族
6、cube个性参数覆盖
开始生成cube数据
按照分区生成,每次生成一个sagment,下次再生成只需,build cube 不需要重新构建cube了
构建监控
’
异常 ,需要启动hadoop的jobhistory 服务
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver