Hive 的数据存储单元结构

按照数据的粒度顺序,数据存储单元数据被组织为:

  • 数据库 Databases

  • 数据表 Tables

  • 分区 Partitions

  • 桶或簇 Buckets (or Clusters)

数据库 Databases

与传统的关系型数据库一样,数据库是一个名称空间,作用是避免表、视图、分区、列等的命名冲突。数据库还可用于为用户或用户组实施安全性。

数据表 Tables

具有相同模式的同质数据单元。下边是一个 page_views 表的示例,其中每一行可以由以下列(模式,schema)组成:

  • timestamp --- 它是 INT 类型,对应于查看页面时的UNIX时间戳
  • userid --- 它是 BIGINT 类型,用于标识查看页面的用户
  • page_url --- 它是捕获页面位置的字符串类型 STRING
  • referer_url --- 它是一个字符串 STRING,用于捕获用户到达当前页的位置
  • IP --- 它是一种字符串类型 STRING,用于捕获发出页面请求的 IP 地址

分区 Partitions

每个表可以有一个或多个分区键,用于确定数据的存储方式。分区除了作为存储单元外,还允许用户有效地识别满足指定条件的行;例如,STRING 类型的 date_partition 分区和 STRING 类型的 country_partition 分区。

分区键的每个唯一值定义了表的一个分区。例如,"2009-12-23" 中的所有 "US" 数据都是 page_views 表的一个分区。因此,如果仅对 2009-12-23 的 "US" 数据运行分析,则只能对表的相关分区运行该查询,从而显著加快分析速度。

但是,请注意,仅仅因为一个分区被命名为 2009-12-23 并不意味着它包含所有或仅包含该日期的数据;分区以日期命名是为了方便;保证分区名称和数据内容之间的关系是用户的工作。

分区列(Partition columns)是虚拟列它们不是数据本身的一部分,而是在加载时派生的。

桶或簇 Buckets (or Clusters)

每个分区中的数据又可以基于表的某一列的散列函数的值被划分为桶 。例如, page_views 表可能由 userid 绑定,userid 是 page_views 表的除 partitions 列以外的列之一。这些可用于有效地对数据进行采样。

相关推荐
weixin_462446238 小时前
Hive Metastore 使用 MySQL 8(CJ 驱动)完整配置实战(含完整 Shell 脚本)
hive·hadoop·mysql
zgl_200537799 小时前
源代码:ZGLanguage 解析SQL数据血缘 之 显示 MERGE SQL 结构图
数据库·数据仓库·hive·数据治理·etl·sql解析·数据血缘
Gain_chance9 小时前
24-学习笔记尚硅谷数仓搭建-DIM层的维度表建表思路及商品表维度表的具体建表解析
数据仓库·hive·笔记·学习·datagrip
talle202110 小时前
Hive | 分区与分桶
大数据·数据仓库·hive
Gain_chance1 天前
23-学习笔记尚硅谷数仓搭建-ODS层业务全量表、增量表结构设计及数据装载脚本
数据仓库·hive·笔记·学习
zhangxl-jc1 天前
Hive基本操作日记
数据仓库·hive·hadoop
叮铃铃上课了2 天前
Hive实战:精准拆分中英文混合字符串(含重音/空格场景)
数据仓库·hive·hadoop
走遍西兰花.jpg2 天前
hive怎么实现连续登录
数据仓库·hive·hadoop
像豆芽一样优秀2 天前
深入理解与应用SQL递归CTE处理层级数据
大数据·hive·sql
B站计算机毕业设计超人2 天前
计算机毕业设计Python+Django考研院校推荐系统 考研分数线预测系统 大数据毕业设计 (代码+LW文档+PPT+讲解视频)
大数据·人工智能·hive·python·django·毕业设计·课程设计