首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Apache Kylin 从零开始构建Cube(含优化策略)

; 星座模型:具有多个事实表,维表可以在不同事实表之间共用,这种模型被称为星座模型; 二.构建准备 1.在Hive准备数据 需要被分析数据必须先保存为Hive形式,然后Kylin才能从Hive...Kylin支持增量Cube构建,通常是事件属性来增量Hive抽取数据。因此Hive表最好按时间属性分区,这样可以避免全量数据扫描,减少读写操作对集群压力,节省Cube构建时间。...最后一步是,为模型补充分割时间和过滤条件,如果此模型事实表记录是按照时间来增加,可以指定一个日期或者时间列作为模型分割时间,从而可以让Cube此列做增量构建。...需要为每一个维度起个名字,然后选择表和,如果是衍生维度,则必须是来自某个维度表,一次可以选择多个,这些值都可以从该维度表主键衍生出来。 ?...Kylin会在底层记录维度表主键与维度表其他维度之间映射关系,以便在查询时能够动 态地将维度表主键“翻译”成这些非主键维度,并进行实时聚合。

2K20

流数据湖平台Apache Paimon(一)概述

1.3.2 Partition Paimon 采用与 Apache Hive 相同分区概念来分离数据。 分区是一种可选方法,可根据日期、城市和部门等特定值将表划分为相关部分。...用户可以通过提供bucket-key选项来指定分桶。如果未指定bucket-key选项,则主键(如果已定义)或完整记录将用作存储桶键。 桶是读写最小存储单元,因此桶数量限制了最大处理并行度。...例如对应快照创建了哪个LSM数据文件、删除了哪个文件。 1.4.3 Data Files 数据文件分区和存储桶分组。每个存储桶目录都包含一个 LSM 树及其变更日志文件。...数据文件记录主键排序。在Sorted Run,数据文件主键范围永远不会重叠。 正如您所看到,不同Sorted Run可能具有重叠主键范围,甚至可能包含相同主键。...查询LSM树时,必须合并所有Sorted Run,并且必须根据用户指定合并引擎和每条记录时间戳来合并具有相同主键所有记录。 写入LSM树记录将首先缓存在内存

1.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

Kettle构建Hadoop ETL实践(八-1):维度表技术

为了识别数据仓库里一个维度层次,首先要理解维度含义,然后识别两个或多个是否具有相同主题。例如,年、季度、月和日具有相同主题,因为它们都是关于日期。...具有相同主题形成一个组,组必须包含至少一个组内其它成员(除了最低级别的),如在前面提到,月包含日。这些链条形成了一个层次,例如,年-季度-月-日这个链条是一个日期维度层次。...该转换产品(product_category)和日期维度三个层次级别(year、quarter和month分组返回销售金额。 ?...第二个是排序记录步骤,在执行分组查询前需要先进行排序。排序字段顺序为product_category、year、quarter、month,均为升序。...排序记录步骤,在执行分组前先进行排序,排序字段顺序为product_category、year、quarter、month、dt,均为升序。

3.4K30

Kettle构建Hadoop ETL实践(九):事实表技术

每种状态都会有一条订单记录,这些记录具有相同订单号,因此订单号不能再作为事务表主键,需要删除order_number字段上自增属性与主键约束。...“字段选择”步骤只选择dw.sales_order_fact表输出11个字段。“排序记录”步骤order_number字段排序,这既是“行转列”步骤要求,也是“排序合并”步骤要求。...图9-10 行转列步骤 该步骤order_number字段进行分组,将一组order_status具有不同值行转为固定10,缺失状态值为空。...“分组”步骤分组字段为前8个字段,聚合字段为后10个字段,聚合类型选择最大”。聚合字段值只有NULL和整数两种可能,按照比较规则整数大,因此选最大值。...为了确定事实表一条销售订单记录是否是迟到,需要把源数据登记日期装载进销售订单事实表。为此在要销售订单事实表上添加登记日期代理键

5.8K10

Kettle构建Hadoop ETL实践(四):建立ETL示例模型

我们要在Hive创建源数据过渡区和数据仓库表,因此需要了解与Hive创建表相关技术问题,包括使用Hive建立传统多维数据仓库时,如何选择适当文件格式,Hive支持哪些表类型,向不同类型表中装载数据时具有哪些不同特性...在实际应用,基本信息表通常由其它后台系统维护。销售订单表有六个属性,订单号是主键,唯一标识一条销售订单记录。产品编号和客户编号是两个外键,分别引用产品表和客户表主键。...RCFILEs是由二进制键/值对组成平面文件,这点与SEQUENCEFILE非常相似。RCFILE以记录形式存储表,即存储方式。它先分割行做水平分区,然后分割做垂直分区。...将日志数据天进行分区,划分数据量大小合适,而且天这个粒度进行查询也能满足需求。每天定时执行以下shell脚本,把前一天生成日志文件装载进Hive。...关键字clustered声明划分桶和桶个数,这里以id来划分桶,划分8个桶。Hive会计算idhash值再以桶个数取模来计算某条记录属于哪个桶。 4.

2K10

硬刚Hive | 4万字基础调优面试小总结

然后,Reduce机器对接收到这些键值对,“键”值进行排序; 在Reduce阶段,把具有相同键所有键值对“值”进行累加,生成分组最终结果。...我们简单分析上面的SQL语句,就是将每个年龄段最大和最小生日获取出来放到同一张表,union all 前后两个语句都是对同一张表按照s_age进行分组,然后分别取最大值和最小值。...星形模式维度建模由一个事实表和一组维表成,且具有以下特点: a. 维表只和事实表关联,维表之间没有关联; b. 每个维表主键为单列,且该主键放置在事实表,作为两边连接外键; c....优势是文件和hadoop apiMapFile是相互兼容 3、RCFile 存储方式:数据行分块,每块存储。...存储方式:数据行分块 每块按照存储。

1.8K42

每天一道大厂SQL题【Day25】脉脉真题实战(一)每日活跃用户

初级题: 每日活跃用户 九月,每日活跃用户数 九月,对于每日活跃用户,其当日活跃时长最大模块 十一期间活跃用户,jobs模块活跃超过100s用户 思路分析 (1) 创建表...首先,我们需要筛选出九月份数据,然后日期分组,最后计算每组不同用户数量。 九月,对于每日活跃用户,其当日活跃时长最大模块 我们可以使用SQL语句来查询每日活跃用户当日活跃时长最大模块。...首先,我们需要筛选出九月份数据,然后日期和用户分组,最后计算每组活跃时长最大模块。...首先,我们需要筛选出十一期间jobs模块数据,然后用户分组,最后计算每组活跃时长超过100s用户。...4、数据量要小,工具要快,如果用hive,就设置set hive.exec.mode.local.auto=true;如果是SparkSQL,就设置合适shuffle并行度,set spark.sql.shuffle.partitions

18420

hive优化大全-一篇就够了

;比如:男UV,女UV,淘宝一天30亿PV,如果性别分组,分配2个reduce,每个reduce处理15亿数据。...例如,若有以下查询: SELECT a,b FROM q WHERE e<10; 在实施此项查询,Q 表有 5 (a,b,c,d,e),Hive 只读取查询逻辑真实需要 3 a、b、e,而忽略...节省了两个临时表读写是一个关键原因,这种方式也适用于 Oracle 数据查找工作。 SQL 具有普适性,很多 SQL 通用优化方案在 Hadoop 分布式计算方式也可以达到效果。...原因是 Hive 主键为 null 值项会被当做相同 Key 而分配进同一个计算 Map。...(比如,10w+级别的计算,用160个reduce,那是相当浪费,1个足够)。 自己动手写sql解决数据倾斜问题是个不错选择

1.4K20

Hive性能优化(全面)

;比如:男UV,女UV,淘宝一天30亿PV,如果性别分组,分配2个reduce,每个reduce处理15亿数据。...例如,若有以下查询: SELECT a,b FROM q WHERE e<10; 在实施此项查询,Q 表有 5 (a,b,c,d,e),Hive 只读取查询逻辑真实需要 3 a、b、e,而忽略...节省了两个临时表读写是一个关键原因,这种方式也适用于 Oracle 数据查找工作。 SQL 具有普适性,很多 SQL 通用优化方案在 Hadoop 分布式计算方式也可以达到效果。...原因是 Hive 主键为 null 值项会被当做相同 Key 而分配进同一个计算 Map。...(比如,10w+级别的计算,用160个reduce,那是相当浪费,1个足够)。 自己动手写sql解决数据倾斜问题是个不错选择

4.1K40

MySQL基础(快速复习版)

,然后表再放到库 2、一个库可以有多张表,每张表具有唯一表名用来标识自己 3、表中有一个或多个又称为“字段”,相当于java“属性” 4、表每一行数据,相当于java“对象” 四、常见数据库管理系统...如何解决:添加有效连接条件 二、分类 年代分类: ​ sql92: ​ 等值 ​ 非等值 ​ 自连接 ​ 也支持一部分外连接(用于oracle、sqlserver,mysql不支持) ​...,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1 varchar:可变长度字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略 三、日期型 year年 date日期...,唯一可以为空 2、相同点 都具有唯一性 都支持组合键,但不推荐 外键: 1、用于限制两个表关系,从表字段值引用了主表某字段值 2、外键和主表被引用要求类型一致,意义一样,名称无要求 3、主表被引用要求是一个...实参列表); 三、查看 show create function 函数名; 四、删除 drop function 函数名; 6.4、流程控制结构 说明: 顺序结构:程序从上往下依次执行 分支结构:程序条件进行选择执行

4.5K20

常见SQL面试题:经典50例

索引:提高查询效率 自动创建:Oracle 会为具有唯一约束(唯一约束,主键约束),自动创建索引 create table emp2( id number(10) primary key...年出生学生名单 学生表中出生日期类型是datetime */ select 学号,姓名 from student where year(出生日期)=1990; 查询各科成绩前两名记录 这类问题其实就是常见...:分组取每组最大值、最小值,每组最大N条(top N)记录。...as b where b.课程号 = a.课程号); 每组最大N条记录 案例:查询各科成绩前两名记录 第1步,查出有哪些组 我们可以课程号分组,查询出有哪些组,对应这个问题里就是有哪些课程号...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录

6.5K42

sql语句面试经典50题_sql基础知识面试题

索引:提高查询效率 –自动创建:Oracle 会为具有唯一约束(唯一约束,主键约束),自动创建索引 create table emp2( id number(10) primary...) 教师表“教师号”设置为主键约束, 教师姓名这一设置约束为“null”(红框地方不勾选),表示这一允许包含空值(null) 2.向表添加数据 1)向学生表里添加数据 添加数据sql...年出生学生名单 学生表中出生日期类型是datetime */ select 学号,姓名 from student where year(出生日期)=1990; 查询各科成绩前两名记录 这类问题其实就是常见...:分组取每组最大值、最小值,每组最大N条(top N)记录。...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录

2.8K20

面试 SQL整理 常见SQL面试题:经典50题

索引:提高查询效率 –自动创建:Oracle 会为具有唯一约束(唯一约束,主键约束),自动创建索引 create table emp2( id number(10) primary...) 教师表“教师号”设置为主键约束, 教师姓名这一设置约束为“null”(红框地方不勾选),表示这一允许包含空值(null) 2.向表添加数据 1)向学生表里添加数据 添加数据sql...年出生学生名单 学生表中出生日期类型是datetime */ select 学号,姓名 from student where year(出生日期)=1990; 查询各科成绩前两名记录 这类问题其实就是常见...:分组取每组最大值、最小值,每组最大N条(top N)记录。...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录

2.2K10

人群创建基础:画像宽表

,很方便拉起各标签数据时间 常见画像宽表表结构设计如图5-4所示,其中包含关键元素主要是日期分区p_date,画像数据主键user_id以及各画像标签。...标签可以采取随机分组策略,即所有标签随机分配到某个分组下,每个中间宽表所包含标签量和计算所需资源量基本一致;也可以标签就绪时间段进行分组,比如早上8点到10点就绪标签可以分为一组,这样可以把中间宽表生产时间打散...选择ClickHouse另外一个原因是其对SQL语法支持非常全面,其表结构设计与Hive表非常相似,这极大地降低了工程开发难度。...为了解决这个问题也可以将标签拆分到两个小宽表,与日期无关标签单独放一张宽表且仅保留最新日期数据;与日期有关标签放到另外一张宽表,且日期保存一段时间数据。...保障画像宽表生产具有较高维护成本,随着宽表标签增加,其生产、修改、补数据等情况会比较频繁,任何一个标签改动都会影响整张宽表使用。

46820

平平无奇SQL面试题:经典50例

索引:提高查询效率 自动创建:Oracle 会为具有唯一约束(唯一约束,主键约束),自动创建索引 create table emp2( id number(10) primary key.../* 查找1990年出生学生名单 学生表中出生日期类型是datetime */ select 学号,姓名 from student where year(出生日期)=1990; 查询各科成绩前两名记录...这类问题其实就是常见分组取每组最大值、最小值,每组最大N条(top N)记录。...每组最大N条记录 案例:查询各科成绩前两名记录 第1步,查出有哪些组 我们可以课程号分组,查询出有哪些组,对应这个问题里就是有哪些课程号 select 课程号,max(成绩) as 最大成绩 from...前面我们使用order by子句某个降序排序(desc)得到是每组最大N个记录。如果想要达到每组最小N个记录,将order by子句某个升序排序(asc)即可。

2.5K60

常见SQL面试题:经典50例

索引:提高查询效率 自动创建:Oracle 会为具有唯一约束(唯一约束,主键约束),自动创建索引 create table emp2(        id number(10) primary key...datetime */ select 学号,姓名  from student  where year(出生日期)=1990;  查询各科成绩前两名记录 这类问题其实就是常见分组取每组最大值、最小值...这类问题其实就是常见分组取每组最大值、最小值,每组最大N条(top N)记录。... as b  where b.课程号 = a.课程号); 每组最大N条记录 案例:查询各科成绩前两名记录 第1步,查出有哪些组 我们可以课程号分组,查询出有哪些组,对应这个问题里就是有哪些课程号...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录

1.9K20

面试中经常被问到 50 个 SQL 题,必须拿下!

索引:提高查询效率 自动创建:Oracle 会为具有唯一约束(唯一约束,主键约束),自动创建索引 create table emp2( id number(10) primary key...年出生学生名单 学生表中出生日期类型是datetime */ select 学号,姓名 from student where year(出生日期)=1990; 查询各科成绩前两名记录 这类问题其实就是常见...:分组取每组最大值、最小值,每组最大N条(top N)记录。...as b where b.课程号 = a.课程号); 每组最大N条记录 案例:查询各科成绩前两名记录 第1步,查出有哪些组 我们可以课程号分组,查询出有哪些组,对应这个问题里就是有哪些课程号...如果对多表合并还不了解,可以看下我讲过《从零学会SQL“多表查询”。 总结 常见面试题:分组取每组最大值、最小值,每组最大N条(top N)记录

3.1K30

MySQL数据库完整知识点梳理----保姆级教程!!!

,肯定是放在having子句中 能用分组前筛选,优先使用分组前筛选 ---- 表达式,函数和别名分组—只有mysql支持 学生姓名长度进行分组,选出组同学个数大于两个人组 SELECT...比如:姓名,学号等 DEFAUIT: 默认,用于保证该字段有默认值 PRIMARY KEY:主键,用于保证该字段具有唯一性,并且非空,比如:学号,员工编号等。...UNIQUE: 唯一,用于保证该字段具有唯一性,但是可以为空,比如: 座位号 CHECK: 检查约束[mysql不支持],比如:年龄,性别 FOREIGN KEY:外键,用于限制两个表关系,用于保证该字段值必须来自于主表关联值...,因此只有当插入两条记录id和stuName都相同时,会报错,因为主键唯一,当插入记录id和stuName某一条为空时,会报错,因为id和stuName组合为一个主键,因此他们两个其中任意一个都不为空...但是插入记录和表已有的某条记录id和stuName都相同时: 因为id和stuName组合为一个主键,因此id和stuName都默认为非空 唯一组合和主键组合相同 unique

5.8K10

数据仓库开发 SQL 使用技巧总结

回表: 对二级查询查询到每个主键,都需要回到聚集索引在查询数据行。 比如开发人员最喜爱得 select * ......左半连接与左外连接区别是,左半连接将返回左表符合 join 条件记录,而左外连接将返回左表所有的记录,匹配不上 join 条件记录将返回 null 值。...,使用索引选择行ref 表示表连接匹配条件,即哪些或者常量被用于查找索引列上值eq_ref 类似于 ref,只是使用索引是主键或者唯一索引const、system 查询优化为了常量,比如主键再... by 限制, hive 在 group by 查询时候要求出现在 select 后面的都必须是出现在 group by 后面的,即 select 必须是作为分组依据 select username...首先使用 timeline 分组, 使用窗口函数, 计算每个时间分组一个增量数目 -- 2. 获取每个时间分组数目的最大值, 也就是该时间段产生一个数目 -- 3.

3.1K30

数据仓库系列--维度表技术

Hive上增加,慎用alter table。原因老版本hive对ORC格式表模式修改,尤其是增加支持存在很多问题。 JIRA上说2.0.0修复了ORC表模式修改问题。...空值处理: 二.维度子集   有些需求不需要最细节数据。此时事实数据需要关联特定维度,这些特定维度包含在从细节维度选择,所以叫维度子集。...例如,事实表可以有多个日期,每个日期通过外键引用不同日期维度,原则上每个外键表示不同维度视图,这样引用具有不同含义。...Hiveorder by跟传统SQL语言order by作用一样,会对查询结果做一次全局排序,如果使用order by ,所有数据都会发送到同一个reduce进行处理。...层次关系方法:固定深度层次进行分组和钻取查询,递归层次结构数据装载、展开与平面化,多路径层次和参差不齐处理 五.退化维度 除了业务主键外没有其他内容维度表。

12710
领券