kylin构建全流程示例

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_name
Lanmu_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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值