大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录

news2024/11/25 10:26:01

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(正在更新…)

章节内容

上节我们完成了如下的内容:

  • Cube 的优化
  • 案例 2 定义衍生维度及对比
  • 聚合组 详细讲解
  • RowKeys 详细讲解

在这里插入图片描述

基本概念

实时数据更新是一种普遍的需求,快速分析趋势才能做正确的决策。
KylinV1.6发布了扩展StreamingCubing功能,它利用Hadoop消费Kafka数据的方式构建Cube,这种方式构建的Cube能满足分钟级的更新需求。

实现步骤

步骤:项目 => 定义数据源(Kafka)=> 定义Model => 定义Cube => Build Cube => 作业调度(频率高)

生成数据

从Kafka消费消息,每条消息都需要包含:

  • 维度信息
  • 度量信息
  • 业务时间戳
    每条消息的数据结构都应该相同,并且可以用同一个分析器将每条消息中的维度、度量和时间戳信息提取出来。
    目前默认的分析器为:org.apache.kylin.source.kafka.TimedJsonStreamParser

创建数据

# 创建名为kylin_streaming_topic的topic
kafka-topics.sh --create --zookeeper h121.wzk.icu:2181 --replication-factor 1 --partitions 1 --topic kylin_streaming_topic1

执行结果如下图所示:
在这里插入图片描述

数据采样

设置采样器

kylin.sh org.apache.kylin.source.kafka.util.KafkaSampleProducer --topic kylin_streaming_topic1 --broker h121.wzk.icu:9092

发了一大批数据,如下图所示:
在这里插入图片描述

检查数据

检查数据是否发送成功:

kafka-console-consumer.sh --bootstrap-server h121.wzk.icu:9092 --topic kylin_streaming_topic1 --from-beginning

数据样例如下所示:

{"country":"INDIA","amount":44.47793969871658,"qty":3,"currency":"USD","order_time":1723358207350,"category":"TOY","device":"iOS","user":{"gender":"Female","id":"1c54f68e-f89a-b5d2-f802-45b60ffccf60","first_name":"unknown","age":15}}
{"country":"AUSTRALIA","amount":64.86505054935878,"qty":9,"currency":"USD","order_time":1723358207361,"category":"TOY","device":"iOS","user":{"gender":"Female","id":"de11d872-e843-19c9-6b35-9263f1d1a2a1","first_name":"unknown","age":19}}
{"country":"CANADA","amount":90.1591854077722,"qty":4,"currency":"USD","order_time":1723358207371,"category":"Other","device":"Andriod","user":{"gender":"Male","id":"4387ee8b-c8c1-1df4-f2ed-c4541cb97621","first_name":"unknown","age":26}}
{"country":"INDIA","amount":59.17956535472526,"qty":2,"currency":"USD","order_time":1723358207381,"category":"TOY","device":"Andriod","user":{"gender":"Female","id":"d8ded433-8f1c-c6e7-99b2-854695935764","first_name":"unknown","age":11}}

定义数据源

数据源选择Add Streaming Table:
在这里插入图片描述
点击之后,把刚才的JSON填写进去,就可以解析出来:
在这里插入图片描述
定义Kafka信息,填写对应的内容,如下图所示:
在这里插入图片描述
可以看到我们刚才添加的内容如下图所示:
在这里插入图片描述

定义Model

新建Model,如下图所示,名称随意:
在这里插入图片描述
原则DataModel,如下图所示:
在这里插入图片描述
选择维度Dimension信息:
在这里插入图片描述
选择度量Measures,如下图所示:
在这里插入图片描述
设置Setting中,设置对应的PartitionDateColumn信息,如下图:
在这里插入图片描述

定义Cube

名字随意,自己能分清就可以,如下图:
在这里插入图片描述
设置Dimensions信息如下图所示:
在这里插入图片描述
设置度量Measure信息如下图所示:
在这里插入图片描述
RefreshSetting设置信息如下图所示:
在这里插入图片描述
设置Aggregation Groups信息:
在这里插入图片描述
RowKeys的设置如下图所示:
在这里插入图片描述
StreamingCube 和 普通的Cube大致上一样,以下几点需要注意:

  • 分区时间列应该Cube的一个Dimension,在SteamingOLAP中时间总是一个查询条件,Kylin利用它来缩小扫描分区的范围
  • 不要使用order time作为dimmension 因为它非常精细,建议使用minute_start、hour_start或其他,取决于用户如何查询数据
  • 定义 year_start、quarter_start、month_start、day_start、hour_start、minute_start或其他,取决于用户如何查询数据
  • 在RefreshSetting设置中,创建更多合并的范围,如0.5时、4小时、1天、7天,这样设置有助于控制CubeSegment的数量
  • 在RowKeys部分,拖拽minute_start到最上面的位置,对于Streaming查询,时间条件会一直显示,将其放到前面将会缩小扫描范围。

构建Cube

可以通过 HTTP 的方式完成构建

curl -X PUT --user ADMIN:KYLIN -H "Content-Type:
application/json;charset=utf-8" -d '{ "sourceOffsetStart": 0, "sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' http://h122.wzk.icu:7070/kylin/api/cubes/streaming_cube1/build2

也可以使用WebUI,我比较喜欢用页面来构建:
在这里插入图片描述

执行查询

select minute_start, count(*), sum(amount), sum(qty) from streamingds1
group by minute_start
order by minute_start

自动构建

用 crontab 来定时任务,让其定时执行:

crontab -e */20 * * * * curl -X PUT --user ADMIN:KYLIN -H "Content-Type:application/json;charset=utf-8" -d '{ "sourceOffsetStart": 0, "sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' http://h122.wzk.icu:7070/kylin/api/cubes/streaming_cube1/build2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2207768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot开发——SpringSecurity安全框架17个业务场景案例(三)

文章目录 一、Spring Security 常用应用场景介绍二、Spring Security场景案例12 表达式支持(Expression-Based)12.1 Spring Security 配置12.2 业务逻辑代码12.3 控制器13、安全上下文(Security Context)13.1 Spring Security 配置13.2 业务逻辑代码13.3 控制器14、安全过滤…

Modnet 人像抠图(论文复现)

Modnet 人像抠图(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 Modnet 人像抠图(论文复现)论文概述论文方法复现WebUI部署 论文概述 人像抠图(Portrait matting)旨在预测一个精确的 alpha 抠图,可以用…

宠物浮毛的危害有哪些?适合养宠家庭的宠物空气净化器推荐!

上周有位患者来医院,他说自从养猫以来,喉咙有毛的感觉日益明显,吐也吐不出来,鼻子里也觉得充斥着毛毛,半夜呼吸的时候也时常受阻,现在一直咳嗽鼻塞。让他拍了片子后发现猫毛吸入肺部导致了肺炎。作为一位呼…

如何用ChatGPT 8小时写出一篇完整论文(附完整提示词)

今天教大家如何利用ChatGPT完成一篇完整的论文。只需要一个标题,剩下全部由ChatGPT完成。总耗时8小时。 阅前提醒: 1.适用人群:这个方法适合应付简单的学术任务,比如日常小论文或投稿一般期刊。但如果你要写高水平的论文&#xf…

【磁盘清理】linux df -h 命令不更新磁盘大小解决方法

centos-root df -h不更新磁盘大小 [rootkafka1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 238G 194G 44G 82% / devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.8G 0 7.8G …

深度学习基础知识-01 数据操作

三维数组:通常用于表示单个图像,如(高度,宽度,通道数)。 四维数组:用于表示图像批次,如(批次大小,高度,宽度,通道数)。 五…

公开选拔!产业实践教授

产业实践教授,这一相对新兴的概念旨在通过产教融合方式促进高校与产业界的深度融合。 通常由来自产业界、拥有丰富实践经验的企业专家担任,承担特定教学任务和科研指导,或利用自身产业资源为学生提供实践机会和就业指导。 随着产教融合政策…

博睿数据Bonree ONE全面适配HarmonyOS NEXT,守护鸿蒙原生应用稳健前行

10月8日,华为官方正式宣布,华为HarmonyOS NEXT(也被称作“纯血鸿蒙”)系统开启公测,迎来国产系统里程碑一刻。作为IT运维监控和可观测性领域的领导者,博睿数据(股票代码:688229&…

交叉熵损失 在PyTorch 中的计算过程

其实就是根据 真实值的结果,当成索引去取的值 import torch import torch.nn as nnaaaa torch.tensor([[2.0,1.0,3.0],[2.0,4.0,2.0]])l1 nn.LogSoftmax(dim-1) result l1(aaaa) print(result) import torch import torch.nn as nn# 定义交叉熵损失函数 criterio…

电影《荒野机器人》观后感

上上周看了电影《荒野机器人》,电影整体是比较偏向温馨的,通过动物与机器人视角,展现人类为情感。 (1)承载-托举-学习-感情 在电影中,有个场景让自己感觉特别温馨,就是机器人为了让大雁宝宝学习…

盛⽔最多的容器 04

盛⽔最多的容器 算法思想&#xff1a;对撞指针&#xff1a; 我写的代码&#xff1a; class Solution {public int maxArea(int[] height) {int left0;int rightheight.length-1;int minHight-1;//防止[2,0]这种特殊情况int maxV0;while(left<right) {if(height[left]>…

【hot100-java】随机链表的复制

链表篇 /* // Definition for a Node. class Node {int val;Node next;Node random;public Node(int val) {this.val val;this.next null;this.random null;} } */class Solution {public Node copyRandomList(Node head) {if(headnull){return null;}java.util.Map<Node…

三品PLM系统赋能中小企业实现数字化转型迈向管理智能化

在全球化的浪潮中&#xff0c;发达国家的企业在管理体系上更具优势&#xff0c;常采用先进的PLM体系提升运营和战略规划效率。相较之下&#xff0c;国内中小企业在PLM系统的应用上明显滞后&#xff0c;中高层管理人员普遍缺乏相应的认知与实践经验&#xff0c;这限制了企业的创…

面向车辆路线问题的泛化神经方法

文章目录 Abstract1 Introduction2 相关工作3 PreliminariesAbstract 学习车辆路径问题(VRPs)的启发式方法由于减少了对手工制定规则的依赖而受到了广泛关注。然而,现有的方法通常在具有固定大小和节点分布的同一任务上进行训练和测试,因此在泛化性能上受到限制。本文研究…

权威骨传导耳机测评分享!2024骨传导耳机推荐榜单大盘点!

骨传导耳机的概念就是针对传统入耳式的不足创新出来的。配戴方式一般为夹耳式和挂耳式&#xff0c;配戴舒适性极高&#xff0c;不堵耳&#xff0c;不涨耳&#xff0c;不伤耳且稳固性非常好。特别适合运动健身&#xff0c;办公通勤等需要长久配戴的场景。 作为一个运动爱好者&a…

携手申威合力筑牢数字之基!麒麟信安参加申威产品发布暨申威产业发展联盟大会

9月20日&#xff0c;申威产品发布暨申威产业发展联盟大会在无锡成功召开&#xff0c;会上&#xff0c;申威新一代服务器处理器威鑫H8000及配套芯片、基础软件等新品集中首发&#xff0c;麒麟信安作为申威产业发展联盟成员单位&#xff0c;与院士专家、政府领导、科研院校、联盟…

125页满分PPT | 数据架构革新顶层规划方案

数据架构的重要性 数据架构规划是确保企业数据战略成功实施的基础。它不仅涉及数据的组织和管理&#xff0c;还关系到数据的价值实现。良好的数据架构规划可以帮助企业实现数据标准化、提高数据质量、保障数据安全&#xff0c;并最终推动业务创新和提升客户服务水平。本文重点展…

【C++篇】继承之韵:解构编程奥义,感悟面向对象的至高法则

文章目录 C 继承详解&#xff1a;初阶理解与实战应用前言第一章&#xff1a;继承的基本概念与定义1.1 继承的概念1.2 继承的定义 第二章&#xff1a;继承中的访问权限2.1 基类成员在派生类中的访问权限2.2 基类与派生类对象的赋值转换2.2.1 派生类对象赋值给基类对象2.2.2 基类…

Spark练习-RDD创建,读取hdfs上的数据,指定rdd分区

目录 RDD的创建 读取HDFS上文件数据 RDD分区指定 RDD的创建 将python数据转为rdd # 将Python数据转为rdd data [1,2,3,4] res sum(data) # 使用python的方法计算时&#xff0c;采用的单机资源计算&#xff0c;如果数据量较大时&#xff0c;可以将python数据转为spark的r…

QD1-P2 HTML 编辑器:HBuilderX

本节学习&#xff1a; HTML课程内容介绍HBuilderX编辑器的使用 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p2 HTML 内容 基础语法 标签整体架构DOCTYPE 常用标签 标题和水平线段落和换行列表div 和 span格式化标签图片超链接标签表格表单字符实体 编辑器 HBuilder…