首页 > 其他分享 >Hive - [08] 数据仓库物理模型设计

Hive - [08] 数据仓库物理模型设计

时间:2024-04-18 10:13:06浏览次数:24  
标签:分桶 my 08 数据仓库 Hive col1 table 数据 分区

 

分区

分区是将表的数据按照某个列的值进行划分和存储的一种方式。通过分区,可以将数据按照特定的维度进行组织,提高查询效率和数据管理的灵活性。

 

一、分区的优势

  • 提高查询性能:通过分区,可以将数据按照特定的列值进行划分,使得查询只需要扫描特定分区的数据,减少了全表扫描的开销。
  • 管理数据更加灵活:可以根据业务需求对数据进行分区,方便数据的管理和维护。
  • 支持数据生命周期:可以根据数据的时间或其他维度进行分区,方便数据的归档和清理。

 

二、创建分区表

create table my_table(
    col1 int,
    col2 string
)
partitioned by (dt string,country string);

 

三、操作分区数据

-- 插入分区数据
insert into my_table partition (dt='2024-04-18',country='China')
values (1,'data1'),(2,'data2');

-- 查询分区数据
select col1,col2
from my_table
where dt='2024-04-18' and country='China';

 

四、分区的设置

  • 选择合适的分区键,通常选择日期作为分区键
  • 评估每天的数据增长量,预估未来三年内的空间情况及记录数
  • 若每天的记录数较少,则选择范围分区,若每天记录数较多,则选择单值分区。
  • 范围分区视数据增长情况,按月、按季、按年进行
  • 时间:根据时间戳或日期将数据按照不同的时间段进行分区,例如按年、月、日等。
  • 地理位置:根据地理位置将数据按照不同的地域进行分区,例如国家、城市等。
  • 类别/类型:根据某个类别或类型属性将数据进行分类并进行相应的分区。

 

 

分桶

 

分桶是将表的数据按照哈希函数的结果进行划分和存储的一种方式。通过分桶,可以将数据均匀地分布到不同的桶中,提高查询的并行度和性能。

 

一、分桶的优势

  • 提高查询性能:通过分桶,可以将数据均匀地分布到不同的桶中,使得查询可以并行地处理不同的桶,提高查询性能。
  • 支持随机抽样:分桶可以方便地进行随机抽样操作,从而进行数据分析和调试。

 

二、创建分桶表

CREATE TABLE my_bucketed_table(
    col1 INT,
    col2 STRING
)
CLUSTERED BY (col1) INTO 4 BUCKETS
STORED BY (col2);

 

三、分桶数据的操作

-- 插入数据
insert overwrite table my_bucketed_table
select col1,col2 from my_table;

-- 查询数据
select col1,col2
from my_bucketed_table
where col1=1;

 

 

四、分桶键的确认

通常对于单个分桶,记录数建议不超过1000w,或压缩前文本大小不超过1000MB

  • 分桶数必须为质数(只能被1和它本身整除的数)
  • 分桶数量 < 500个
  • 选择分桶字段时,尽量选择离散度较高的列,以避免造成Bucket的大小过意悬殊。
  • 常用的分桶字段多为原表主键,或者身份证号码、手机号等信息
  • 选择不会做update的字段(即确认下来的分桶键字段的值相对来说是常量,字段的值不会因为业务而变动)

查看数据分布,确认离散度较高的列,也就是相对来说数据分布较为均衡的字段。

select column_name,count(*) as count
from table_name
group by column_name
order by count;

 

 

 

分区分桶数的综合评估

  • 分区数 * 分桶数 < 10000个
  • 单个分区记录数 < 5000w
  • 分区数量 < 200个
  • 单个分区内的分桶数是否小于Hive配置CPU数

 

 

 

 

 

— 要养成终身学习的习惯 —

标签:分桶,my,08,数据仓库,Hive,col1,table,数据,分区
From: https://www.cnblogs.com/houhuilinblogs/p/18142900

相关文章

  • httprunner 4.x学习 - 08base_url使用
    前言base_url是把所有接口的公共url提取出来,如我两个接口地址如下:imos登录接口:http://120.25.121.168:19001/api/login任务列表接口:http://120.25.121.168:19001/api/task这时,base_url:http://120.25.121.168:19001/api案例在.evn中设置环境变量base_url#.envbase_url=ht......
  • [题解][洛谷P1108] 低价购买
    题目描述求最长下降子序列长度,以及最长下降子序列的个数。(构成的序列一样的时候,视为同一种最长下降子序列)题解n不超过5000,n^2复杂度即可解决该问题。主要在于如何统计最长下降子序列个数。可以设数组t[i]表示以i为结尾的最长下降子序列个数,在更新f[i]的时候顺便更新。t[i]=......
  • [ABC208D] Shortest Path Queries 2 题解
    [ABC208D]ShortestPathQueries2题解思路解析此题的本质其实就是Floyd。我们在进行Floyd时会有一个\(k\)充当中间点,可见这里的\(k\)就等于题目当中的\(k\),因为小于等于\(k\)的所有点都被当作过中间点转移过,而大于\(k\)的所有点都没有被当作过中间点转移过,于是直......
  • 08 Vue3项目搭建后台管理系统
    项目配置elementPlus1.下载安装npminstallelement-plus@element-plus/icons-vue2.main.ts全局注册import{createApp}from'vue';import{createPinia}from'pinia';//1.引入elementPlusimportElementPlusfrom'element-plus';//......
  • Hive引擎底层初探
    1、什么是HiveHive是一个基于Hadoop的数据仓库工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得熟悉SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在Hadoop集群上执行数据处理和分析。2、Hive起源回答这个问题之前,先介绍下Hadoop......
  • MyBatis-08-Spring的MyBatis Interceptor
    addInterceptor3个地方XML解析的SqlSessionFactoryBean:生成SqlSession的FactoryBeanPageHelperAutoConfiguration:分页助手的自动配置SqlSessionFactoryBean发现现在都没有将他作为一个FactoryBean使用了getObject调用了afterPropertiesSet生成SqlSessionF......
  • MIT6.S081 - Lab1: Xv6 and Unix utilities
    Part1:sleep实验要求与提示可以参考user/echo.c,user/grep.c和user/rm.c文件如果用户忘记传递参数,sleep应该打印一条错误消息命令行参数传递时为字符串,可以使用atoi函数将字符串转为数字使用系统调用sleep,有关实现sleep系统调用的内核代码参考kernel/sysproc.c(......
  • hive on spark内存模型
    内容介绍hiveonspark的调优,那必然涉及到这一系列框架的内存模型。本章就是来讲一下这些框架的内存模型。hiveonspark的任务,从开始到结束。总共涉及了3个框架。分别是:yarn、hive、spark其中,hive只是一个客户端的角色。就不涉及任务运行时的内存。所以这里主要讲的yarn和spa......
  • day08_我的Java学习笔记 (String类、ArrayList集合类)
    常用API(String、ArrayList)什么是APIAPI文档下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html1.String简单介绍【补充】:为什么java数据类型String是大写?1.1String类概述1.2String类创建对象的2种方式1.3String......
  • P4298 [CTSC2008] 祭祀 题解
    P4298[CTSC2008]祭祀题解给定DAG,求最长反链长度,最长反链方案,有多少个点可以成为反链上的点。Case1熟知Dilworth定理:偏序集的最长反链的长度等于最小链划分。因为偏序集有传递性,所以我们也需要对DAG做一遍传递闭包。这样可以套用Dilworth定理,最小链划分等于点数减......