- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
@ 。
Apache Kylin 官网中文地址 https://kylin.apache.org/cn/ 。
Apache Kylin 官网中文最新文档 https://kylin.apache.org/cn/docs/ 。
Apache Kylin 源码地址 https://github.com/apache/kylin 。
Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 公司中国团队开发并贡献给Apache,使用神兽麒麟命名,查询速度快能在亚秒内响应。最新版本为v4.0.3 。
Apache Kylin4.0 是一个重大改革版本,其中4.0之前采用HBase 作为存储引擎来保存 cube 构建后产生的预计算结果,构建引擎为MR,下推引擎采用的是HIVE JDBC;4.0之后采用了全新的 Spark 构建引擎和 Parquet 作为存储,同时使用 Spark 作为查询引擎。版本功能详细对比如下:
使用 Apache Parquet + Spark 来代替 HBase 使用理由如下:
数据仓库是一个各种数据(包括历史数据、当前数据)的中心存储系统,是BI(business intelligence,商业智能)的核心部件。例如数据包含来自企业各个业务系统的订单、交易、客户、采购、库存、供应商、竞争对手数据.
商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。为了将数据转化为知识,需要利用到数据仓库、联机分析(OLAP)工具和数据挖掘等技术.
OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面、各个维度观察信息,以达到深入理解数据的目的,OLAP也称为多维分析.
星型模型:由一个或多个引用任意数量维表的事实表组成.
事实表:由业务流程的测量、度量或事实组成.
查找表:是一个数组,它用一个更简单的数组索引操作代替运行时计算.
维度:是一种对事实和度量进行分类的结构,以便使用户能够回答业务问题。常用的维度有人物、产品、地点和时间.
度量:是可以进行计算(例如总和、计数、平均、最小值、最大值)的属性.
连接:一个SQL连接子句组合来自关系数据库中两个或多个表的记录.
OLAP Cube:OLAP多维数据集是用0维或多维来理解的数据数组;一个多维的数据集称为一个OLAP Cube.给定一个数据模型,我们可以对其上的所有维度进行聚合,对于 N 个维度来说,组合的所有可能性共有 2^n-1种。对于每一种维度的组合,将度量值做聚合计算,然后将结果保存 为一个物化视图,称为 Cuboid。所有维度组合的 Cuboid 作为一个整体,称为 Cube。简单点来讲:就是每一种维度的组合都叫一个Cuboid, 所有的维度的组合就叫做Cube.
维度与度量 。
Cube Actions 。
Job Status 。
Job Action 。
Kylin 提供与多种数据可视化工具的整合能力,如 Tableau、PowerBI 等,很方便使用 BI 工具对 Hadoop 数据进行分析.
为了让用户轻松试用麒麟,并方便开发人员在修改源代码后进行验证和调试。可以通过麒麟的docker镜像快速部署。该镜像包含麒麟所依赖的每个服务:
# 拉取镜像,dcoker hub上已有kylin 5.0.0版本镜像,二进制未更新
docker pull apachekylin/apache-kylin-standalone:5.0.0
# 运行容器
docker run -d \
-m 8G \
-p 7070:7070 \
-p 8088:8088 \
-p 50070:50070 \
-p 8032:8032 \
-p 8042:8042 \
-p 2181:2181 \
apachekylin/apache-kylin-standalone:5.0.0
以下服务在容器启动时自动启动:NameNode、 DataNode、ResourceManager、NodeManager、Kylin,相关web UI地址如下:
# 下载最新版本v4.0.3 for Apache Spark 3.1.x
wget https://dlcdn.apache.org/kylin/apache-kylin-4.0.3/apache-kylin-4.0.3-bin-spark3.tar.gz
# 解压文件
tar -zxvf apache-kylin-4.0.3-bin-spark3.tar.gz
# 进入kylin根目录
cd apache-kylin-4.0.3-bin-spark3
# 根目录结构说明如下
bin:启动/停止Kylin服务、备份/恢复元数据的shell脚本,以及一些实用脚本。
conf: XML配置文件,这些xml文件的功能可以在配置页面中找到。
lib:对外使用的Kylin jar文件,如Hadoop作业jar、JDBC驱动程序、HBase协处理器jar等。
meta_backups:执行" bin/metastore.sh backup "命令时的默认备份文件夹;
sample_cube:用于创建样例多维数据集及其表的文件。
spark: spark由$KYLIN_HOME/bin/download.sh下载。
tomcat:运行Kylin应用程序的tomcat web服务器。
tool:命令行工具的jar文件。
# 配置麒麟环境变量
vim /etc/profile
export KYLIN_HOME=/home/commons/apache-kylin-4.0.3-bin-spark3
# 执行环境变量生效
source /etc/profile
# 前面用apache-kylin-4.0.3-bin-spark3使用spark3需要下载spark-3.1.1版本
wget https://archive.apache.org/dist/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz
# 解压
tar -xvf spark-3.1.1-bin-hadoop3.2.tgz
# 进入目录
mv spark-3.1.1-bin-hadoop3.2 spark-yarn
# 由于需要用到yarn作为资源管理器,配置spark使用yarn的资源
vim conf/spark-env.sh
YARN_CONF_DIR=/home/commons/hadoop/etc/hadoop
并将MySQL连接驱动拷贝到spark的jars目录下,让spark能够正常连接MySQL.
将可使用的hive-site.xml拷贝到spark的conf目录,用于spark操作hive的元数据等.
将上面spark-yarn目录分发到所有的yarn的node manager上,并且修改所有node manager的spark环境变量 。
vim /etc/profile
export SPARK_HOME=/home/commons/spark-yarn
export PATH=$SPARK_HOME/bin:$PATH
# 执行环境变量生效
source /etc/profile
配置MySQL元数据 。
-- 创建一个kylin数据库
CREATE DATABASE kylin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
-- 创建一个kylin用户
CREATE USER 'kylin'@'%' IDENTIFIED BY 'kylin';
-- 向用户授予刚刚创建的数据库的所有权限
GRANT ALL PRIVILEGES ON kylin.* TO kylin@'%' WITH GRANT OPTION;
ALTER USER 'kylin'@'%' IDENTIFIED WITH mysql_native_password BY 'kylin';
FLUSH PRIVILEGES;
java -classpath kylin-server-base-4.0.3.jar\
:kylin-core-common-4.0.3.jar\
:spring-beans-5.2.22.RELEASE.jar\
:spring-core-5.2.22.RELEASE.jar\
:commons-codec-1.6.jar \
org.apache.kylin.rest.security.PasswordPlaceholderConfigurer \
AES kylin
修改kylin的配置文件,vim conf/kylin.properties 。
kylin.metadata.url=kylin_metadata@jdbc,url=jdbc:mysql://mysqlserver:3306/kylin,username=kylin,password=kylin,maxActive=10,maxIdle=10,driverClassName=com.mysql.cj.jdbc.Driver
# HDFS工作空间
kylin.env.hdfs-working-dir=/kylin
# kylin在zookeeper的工作目录
kylin.env.zookeeper-base-path=/kylin
# 不使用kylin自带的zookeeper
kylin.env.zookeeper-is-local=false
# 外部zookeeper连接字符串配置
Kylin.env.zookeeper-connect-string=zk1:2181,zk2:2181,zk3:2181
# SPARK BUILD ENGINE CONFIGS,hadoop conf目录位置
kylin.env.hadoop-conf-dir=/home/commons/hadoop/etc/hadoop
# 为了避免遇到各种环境问题,可以运行$KYLIN_HOME/bin/check-env.sh脚本进行环境检查,查看是否存在问题。如果识别出任何错误,脚本将打印出详细的错误消息。如果没有错误消息,说明您的环境适合Kylin操作。
$KYLIN_HOME/bin/check-env.sh
# 启动
$KYLIN_HOME/bin/kylin.sh start
# 麒麟启动的默认端口为7070。可以使用$KYLIN_HOME/bin/kylin-port-replace-util.sh set number修改端口。修改后的端口号为“7070 +编号”。
$KYLIN_HOME/bin/kylin-port-replace-util.sh set number 1
# 停止
$KYLIN_HOME/bin/kylin.sh start
# 重启
$KYLIN_HOME/bin/kylin.sh restart
# 可以查看运行日志
tail -f logs/kylin.log
Apache Kylin™ 令使用者仅需三步就可实现超大数据集上的亚秒级查询.
# 使用Kylin安装目录下示例快速体验Kylin,先执行一个脚本来创建一个示例多维数据集
$KYLIN_HOME/bin/sample.sh
执行脚本完成后,查看hive default默认数据库下已经有相应的 。
通过kylin的WebUI click System -> Configuration -> Reload Metadata 加载元数据信息 。
重新加载元数据后,可以在左上角的project中看到一个名为learn_kylin的项目,这个项目包含一个批处理多维数据集kylin_sales_cube和一个流数据集kylin_streaming_cube.
可以直接构建kylin_sales_cube,并且可以在构建完成后查询它.
create database kylin;
use kylin;
create external table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';
create external table if not exists emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
mkdir tmpdata
# 制作部门表(dept.txt)数据
vim tmpdata/dept.txt
100 ACCOUNTING 1700
200 RESEARCH 1800
300 SALES 1900
400 OPERATIONS 1700
# 制作员工表(emp.txt)数据
vim tmpdata/emp.txt
1336 SMITH CLERK 1869 2016-01-03 2800.0 1000.0 200
1466 ALLEN SALESMAN 1665 2016-03-08 5600.0 1500.0 300
1488 WARD SALESMAN 1665 2016-03-10 4375.0 2500.0 300
1533 JONES MANAGER 1806 2016-04-18 10412.5 6000.0 200
1621 MARTIN SALESMAN 1665 2016-10-14 4375.0 7000.0 300
1665 BLAKE MANAGER 1806 2016-05-17 9975.0 4000.0 300
1749 CLARK MANAGER 1806 2016-06-25 8575.0 3500.0 100
1755 SCOTT ANALYST 1533 2022-05-05 10500.0 6800.0 200
1806 KING PRESIDENT NULL 2016-12-03 17500.0 20000.0 100
1811 TURNER SALESMAN 1665 2016-09-24 5250.0 3000.0 300
1843 ADAMS CLERK 1755 2022-06-08 3850.0 2500.0 200
1867 JAMES CLERK 1665 2016-12-19 3325.0 2400.0 300
1869 FORD ANALYST 1533 2016-12-19 10500.0 8000.0 200
1901 MILLER CLERK 1749 2017-02-08 4550.0 3200.0 100
load data local inpath '/home/commons/apache-kylin-4.0.3-bin-spark3/tmpdata/dept.txt' into table dept;
load data local inpath '/home/commons/apache-kylin-4.0.3-bin-spark3/tmpdata/emp.txt' into table emp;
点击左上角的+来创建一个Project,输出项目名称和描述点击提交按钮 。
在Models页面的左边点击New按钮后点击New Model,填写Model名称及描述后Next 。
选择员工作为Fact Table事实表,添加部门作为Lookup Table维度表 。
选择维度信息 。
选择度量信息 。
添加分区信息(这里没有做分区表)及过滤条件这里我们暂时不填写保持默认,点击“Save”并确认保存模型.
在Models页面的左边点击New按钮后点击New Cube,选择员工Model及填写Cube Name,点击next 。
添加真正维度字段,(将来会影响 Cuboid 的个数,并且只能从 model 维度字段里面选择),点击ok并点击下一步 。
添加真正度量值字段(将来预计算的字段值,只能从 model 度量值里面选择),点击度量添加按钮“+ Measure”,填写信息并点击ok,并选择next 。
接着刷新设置、高级设置、配置覆盖都先保持默认的,最后查看概览点击save按钮并确定保存 。
在上面创建的cube上点击build构建action动作,并确认开始构建 。
查看当前正在构建的情况 。
等待一会后构建完成 。
在Insight洞察页面新查询框中输入sql语句 。
select dept.dname,sum(emp.sal) from emp join dept on emp.deptno = dept.deptno group by dept.dname;
第一次之后的查询都是秒级响应 。
相比下面在hive中执行查询快了非常多 。
可以针对查询结果点击Grid按钮实现图形可视化,选择图标类型、维度和度量信息展示,还可以选择导出csv文件结果 。
最后此篇关于开源分布式支持超大规模数据分析型数据仓库ApacheKylin实践-上的文章就讲到这里了,如果你想了解更多关于开源分布式支持超大规模数据分析型数据仓库ApacheKylin实践-上的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1.摘要 在数据可视化、统计绘图和图表生成领域,Python 被广泛使用,其中 Matplotlib 是一个极其重要的基础三方库。本博客旨在介绍 Python 及其三方库 Matplotlib
为什么要学习pandas? numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数
0. 数据说明 本项目所用数据集包含了一个家庭6个月的用电数据,收集于2007年1月至2007年6月。 这些数据包括有功功率、无功功率、电压、电流强度、分项计量1(厨房)、分项计量2(洗衣房
由于我现在不知道自己在做什么,所以我的措辞听起来很有趣。但是说真的,我需要学习。 我面临的问题是提出一种方法(模型)来估计软件程序的工作方式:即运行时间和最大内存使用量。我已经拥有了大量数据。此数据集
我在 PostgreSQL 中有一个表,其结构和数据如下: Question | Answer | Responses ------------------------------
numbers = LabelEncoder() State_Data['Quality'] = numbers.fit_transform(State_Data['Quality Paramet
我一直在尝试解决这个问题: 我有一组数据点,对应于一组时间值。即 values =[1,2,3,4,5,6,7,8,4] times = [0.1,0.2,0.3,0.4]... 等等,这是一个示例速
哔哔一下 雪中悍刀行兄弟们都看过了吗?感觉看了个寂寞,但又感觉还行,原谅我没看过原著小说~ 豆瓣评分5.8,说明我还是没说错它的。 当然,这并不妨碍它波播放量嘎嘎上涨,半个月25亿播放,平均一集一个亿
在 Pandas 中是否有任何可重用的数据分析代码,可以在 html 输出中给出结果。 我已经尝试过来自以下链接的命令,但没有一个输出是 html 格式。 https://kite.com/blog/
吴京近年拍的影视都是非常富有国家情怀的,大人小孩都爱看,每次都是票房新高,最新的长津湖两部曲大家都有看吗,第一步还可以,第二部水门桥也不差,截止目前已经36.72亿票房。 某眼评分9.6,某瓣评分7.
我有一个 .csv 文件,其中包含来自 eBay 拍卖的以下数据: auctionid - 拍卖的唯一标识符 bidtime - 出价的时间(以天为单位),从拍卖开始 投标人 - 投标人的 eBay
目录 1、爬虫 1.1 爬取目标 1.2 分析页面 1.3 爬虫代码 1.4 结果数据
我是 pyspark 的新手,我有这个示例数据集: Ticker_Modelo Ticker Type Period Product Geography Source Unit
我是一名优秀的程序员,十分优秀!