草庐IT

从头到尾,建一个kylin多维分析Cube

万州客 2023-04-13 原文

实践到第三次了,作一下比较完整的记录。

一,启动kylin测试的docker,保证Hive命令能正常执行

 docker run -d --name kylin -p 7070:7070 -p 8088:8088 -p 50070:50070 -p 8032:8032 -p 8042:8042 -p 16010:16010 apachekylin/apache-kylin-standalone:3.1.0

kylin的这个标准版镜像里,带了hive的,方便些。

docker exec -it kylin bash
[root@ab0f5be3a766 admin]# hive
ls: cannot access /home/admin/spark-2.3.1-bin-hadoop2.6/lib/spark-assembly-*.jar: No such file or directory

Logging initialized using configuration in jar:file:/home/admin/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
hive> 

二,建好hive的表格,并导入测试数据

相关命令和导入数据如下

#建库建表
create database kylin_flat_db;


create table kylin_flat_db.web_access_fact_tbl
     (
         day           date,
         cookieid      string,
         regionid      string,
         cityid        string,
         siteid        string,
         os            string,
         pv            bigint
     ) row format delimited
     fields terminated by '|' stored as textfile;
     
create table kylin_flat_db.region_tbl
     (
     regionid       string,
     regionname     string
     ) row format delimited
     fields terminated by '|' stored as textfile;
     
create table kylin_flat_db.city_tbl
     (
     regionid     string,
     cityid       string,
     cityname     string
     ) row format delimited
     fields terminated by '|' stored as textfile;

导入数据

use kylin_flat_db;

load data local inpath '/opt/fact_data.txt' into table web_access_fact_tbl;

load data local inpath '/opt/city.txt' into table city_tbl;

load data local inpath '/opt/region.txt' into table region_tbl;

其中fact_data.txt

2016-07-19|GBSYO1IMQ7GHQXOVTP|G03|G0302|810|Mac OS|2
2016-07-03|NTJ95UHFUD3UECNS0U|G05|G0502|3171|Mac OS|4
2016-07-20|ZR27L7C79CCJGTN1F7|G04|G0402|8793|Mac OS|2
2016-07-01|C17QEB0560LUZHD26P|G04|G0402|9793|Android 5.0|5
2016-07-01|N9LRCVTU6PGSUDJ9RB|G03|G0301|1292|Mac OS|1

city.txt

G01|G0101|朝阳
G01|G0102|海淀
G02|G0201|南京
G02|G0202|宿迁
G03|G0301|杭州
G03|G0302|嘉兴
G04|G0401|徐汇
G04|G0402|虹口
G05|G0501|广州
G05|G0502|海珠

region.txt

G01|北京
G02|江苏
G03|浙江
G04|上海
G05|广州

在运行load data命令之前,记得把三个数据文导,docker cp到容器的指定位置。

[root@127 hive]# docker cp fact_data.txt kylin:/opt/
[root@127 hive]# docker cp city.txt kylin:/opt/
[root@127 hive]# docker cp region.txt kylin:/opt/

跑个测试查询

select "DAY",regionname,cityname,sum(pv),count(distinct cookieid) 
      from WEB_ACCESS_FACT_TBL a
      left join CITY_TBL b
      on a.cityid = b.cityid
      left join REGION_TBL c
      on c.regionid = a.regionid
      group by "DAY", regionname, cityname;
======================
No Stats for kylin_flat_db@web_access_fact_tbl, Columns: regionid, pv, cookieid, cityid
No Stats for kylin_flat_db@city_tbl, Columns: cityname, cityid
No Stats for kylin_flat_db@region_tbl, Columns: regionid, regionname
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Query ID = root_20220511000253_47dcbc5e-c3d9-4ea2-b1a2-85f0ff42ba20
Total jobs = 1
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.4/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Execution log at: /tmp/root/root_20220511000253_47dcbc5e-c3d9-4ea2-b1a2-85f0ff42ba20.log
2022-05-11 00:03:00     Starting to launch local task to process map join;      maximum memory = 477626368
2022-05-11 00:03:01     Dump the side-table for tag: 1 with group count: 6 into file: file:/tmp/root/c5ea48ae-04d4-49fb-a33a-6e4903c94ce0/hive_2022-05-11_00-02-53_412_3500028136458508988-1/-local-10006/HashTable-Stage-3/MapJoin-mapfile01--.hashtable
2022-05-11 00:03:01     Uploaded 1 File to: file:/tmp/root/c5ea48ae-04d4-49fb-a33a-6e4903c94ce0/hive_2022-05-11_00-02-53_412_3500028136458508988-1/-local-10006/HashTable-Stage-3/MapJoin-mapfile01--.hashtable (424 bytes)
2022-05-11 00:03:01     Dump the side-table for tag: 1 with group count: 11 into file: file:/tmp/root/c5ea48ae-04d4-49fb-a33a-6e4903c94ce0/hive_2022-05-11_00-02-53_412_3500028136458508988-1/-local-10006/HashTable-Stage-3/MapJoin-mapfile11--.hashtable
2022-05-11 00:03:01     Uploaded 1 File to: file:/tmp/root/c5ea48ae-04d4-49fb-a33a-6e4903c94ce0/hive_2022-05-11_00-02-53_412_3500028136458508988-1/-local-10006/HashTable-Stage-3/MapJoin-mapfile11--.hashtable (591 bytes)
2022-05-11 00:03:01     End of local task; Time Taken: 1.031 sec.
Execution completed successfully
MapredLocal task succeeded
Launching Job 1 out of 1
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Job running in-process (local Hadoop)
2022-05-11 00:03:04,496 Stage-3 map = 100%,  reduce = 100%
Ended Job = job_local1516279064_0001
MapReduce Jobs Launched: 
Stage-Stage-3:  HDFS Read: 550 HDFS Write: 1004 SUCCESS
Total MapReduce CPU Time Spent: 0 msec
OK
DAY     NULL    NULL    NULL    0
DAY     浙江    嘉兴    2       1
DAY     浙江    杭州    1       1
DAY     广州    海珠    4       1
DAY     上海    虹口    7       2
Time taken: 11.095 seconds, Fetched: 5 row(s)

三,在kylin的WEB UI里新建项目,导入刚刚生成的Hive数据源。

 docker run --name kylin -p 7070:7070 -p 8088:8088 -p 60070:50070 -p 8032:8032 -p 8042:8042 -p 16010:16010 apachekylin/apache-kylin-standalone:3.1.0
2022-05-11 08_05_28-悬浮球.png

2022-05-11 08_30_24-MessageCenterUI.png

2022-05-11 08_30_59-MessageCenterUI.png

四,建立数据模型

模型名称


2022-05-11 08_33_02-MessageCenterUI.png

定义事实表和维度表及关联


2022-05-11 08_41_11-MessageCenterUI.png

2022-05-11 08_41_24-MessageCenterUI.png

字义维度字段和度量数据字段
2022-05-11 08_43_20-MessageCenterUI.png

2022-05-11 08_44_12-MessageCenterUI.png

确认日期格式之后,保证模型(那个filter字段pv的,可写可不写)


2022-05-11 08_48_47-MessageCenterUI.png

2022-05-11 09_02_20-Kylin.png

完成之后,可以检查一下,走走过场
2022-05-11 09_04_39-MessageCenterUI.png
2022-05-11 09_04_21-MessageCenterUI.png

五,训练CUBE

选择模型,命名CUBE


2022-05-11 09_06_11-MessageCenterUI.png

训练CUBE时的维度信息确认(两种类型哟)


2022-05-11 09_08_38-MessageCenterUI.png

确定CUBE的度量值
2022-05-11 09_12_55-MessageCenterUI.png
2022-05-11 09_12_05-MessageCenterUI.png

后面的设置,保持默认,保持即可。


2022-05-11 09_16_41-MessageCenterUI.png
2022-05-11 09_16_14-MessageCenterUI.png
2022-05-11 09_14_19-MessageCenterUI.png

六,提交训练

确认没问题,就一把梭哈吧。


2022-05-11 09_18_20-MessageCenterUI.png

2022-05-11 09_21_33-MessageCenterUI.png

2022-05-11 09_22_20-MessageCenterUI.png

七,测试查询的速度

有关从头到尾,建一个kylin多维分析Cube的更多相关文章

  1. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  2. ruby - 如何在 Ruby 中获取多维哈希中的键? - 2

    因此,对于普通哈希,您可以使用它来获取key:hash.keys如何获取如下所示的多维哈希的第二维键:{""=>{"first_name"=>"test","last_name"=>"test_l","username"=>"test_user","title"=>"SalesManager","office"=>"test","email"=>"test@test.com"}}每个项目都是唯一的。所以我想从上面得到的键是:first_name,last_name,username,title,officeandemail 最佳答案

  3. ruby - 在 Ruby 中动态生成多维数组 - 2

    我正在尝试动态构建一个多维数组。我想要的基本上是这样的(为简单起见写出来):b=0test=[[]]test[b]这给了我错误:NoMethodError:undefinedmethod`test=[[],[],[]]而且它工作正常,但在我的实际使用中,我不会事先知道需要多少个数组。有一个更好的方法吗?谢谢 最佳答案 不需要像您正在使用的索引变量。只需将每个数组附加到您的test数组:irb>test=[]=>[]irb>test[["a","b","c"]]irb>test[["a","b","c"],["d","e","f"]]

  4. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  5. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  6. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  7. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

  8. ruby - 如何在ruby中制作动态多维数组? - 2

    我有一个关于多维数组的初学者ruby​​问题。我想按年份和月份对条目进行排序。所以我想创建一个包含年->月->月条目的多维数组所以数组应该是这样的:2009->08->Entry1->Entry209->Entry32007->10->Entry5现在我有:@years=[]@entries.eachdo|entry|timeobj=Time.parse(entry.created_at.to_s)year=timeobj.strftime("%Y").to_imonth=timeobj.strftime("%m").to_itmparr=[]tmparrentry}@years.pu

  9. ruby-on-rails - 为什么我不能在 Rails 的表格中创建一个数组作为列? - 2

    为什么我不能这样做:classCreateModels是否有其他方法可以使数组(“apples”)成为Fruit类实例的属性? 最佳答案 在Rails4中并使用PostgreSQL,您实际上可以在数据库中使用数组类型:迁移:classCreateSomething 关于ruby-on-rails-为什么我不能在Rails的表格中创建一个数组作为列?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

  10. ruby-on-rails - 如何使用 ruby​​-prof 和 JMeter 分析 Rails - 2

    我想使用ruby​​-prof和JMeter分析Rails应用程序。我对分析特定Controller/操作/或模型方法的建议方法不感兴趣,我想分析完整堆栈,从上到下。所以我运行这样的东西:RAILS_ENV=productionruby-prof-fprof.outscript/server>/dev/null然后我在上面运行我的JMeter测试计划。然而,问题是使用CTRL+C或SIGKILL中断它也会在ruby​​-prof可以写入任何输出之前杀死它。如何在不中断ruby​​-prof的情况下停止mongrel服务器? 最佳答案

随机推荐