HBase表结构

news2024/12/23 19:05:04

HBase是非关系型数据库,是高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。

HBase使用场景

  • 大规模数据存储:如日志记录、数据库备份等。
  • 实时数据访问:如实时搜索、实时分析等。
  • 高性能读写:如高并发、低延迟的读写操作。

一般我们从数仓中离线统计分析海量数据,将得到的结果插入HBase中用于实时查询。

表结构

hbase在表中组织数据。表名是字符串和字符的组合,可以在文件系统路径中使用

这里以一个公司员工表为案例来讲解,此表中包含员工基本信息(员工姓名、年龄),员工详细信息(工资、角色),以及时间戳。整体表结构如下:

每一行有一个RowKey用于唯一地标识和定位行,各行数据按RowKey的字典序排列。其中ImployeeBasicInfoCLF和DetailInfoCLF是两个列族,列族下又有多个具体列。(员工基本信息列族:姓名、年龄。详细信息列族:薪水、角色)

行键RowKey:

在表中数据依赖于行来存储,行通过行键来区分。行键没有数据类型,通常是一个字节数组 

  • 行键,类似mysql中的主键,Table中的记录按照Row Key排序,行键是表结构的一部分;
  • 由于Hbase只支持3中查询方式:
  1. 基于Rowkey的单行查询
  2. 基于Rowkey的范围扫描
  3. 全表扫描
  • 因此,Rowkey对Hbase的性能影响非常大,Rowkey的设计就显得尤为的重要。
  • rowkey 行键可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),最好是 16。
  • 在 HBase 内部,rowkey 保存为字节数组。
  • rowkey是行的唯一标识,相同行键的数据属于同一行
  • HBase 会对表中的数据按照 rowkey 升序排序 (字典顺序)

列族/列簇ColumnFamily

列族是一些列的集合,一个列族所有成员都有同样的前缀

行中的数据通过列族来组织。列族也暗示了数据的物理排列。所以列族必须预先定义,并且不容易被修改。每行都拥有相同的列族,可能有些行的数据为空。列族是字符串和字符的组合,可以在文件系统路径中使用

列族必须在表建立的时候声明,列则不需要特别声明,用户随时可以创建新列。

  • Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取。就像是家族的概念,我们知道一个家族是由于很多个的家庭组成的。列族也类似,列族是由一个一个的列组成(任意多)。
  • Hbase表的创建的时候就必须指定列族。就像关系型数据库创建的时候必须指定具体的列是一样的。
  • Hbase的列族不是越多越好,列族越多,在取一行数据需要参与IO、搜寻的文件就越多;官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。
  • 一个列族会储存一个物理文件;
  • 通常将具有相同IO(读写)属性的列放在同一个列族下,IO属性即经常在一起查询的字段,由具体的实际业务中决定;

列Column

  • 列为每一行的列名和对应的值;可以理解为mysql的列;
  • 一个列族包含一个或多个列;列族是表结构的一部分,而列不是;
  • 定位一个列,必须指定列族;
  • 列名都以列族作为前缀,如:courses:history,courses:math;都属于courses这个列族;

单元格cell

  • HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell;
  • 每个 cell 都保存着同一份数据的多个版本。版本通过时间戳来索引。
  • 由{rowkey, column( = + ), version} 唯一确定的单元。 Cell 中的数据是没有类型的,全部是字节码形式存贮。

HBase表特点

  • 数据规模大,单表可容纳数十亿行,上百万列。
  • 无模式,不像关系型数据库有严格的Scheme,每行可以有任意多的列,列可以动态增加,不同行可以有不同的列,列的类型没有限制。
  • 稀疏,值为空的列不占存储空间,表可以非常稀疏,但实际存储时,能进行压缩。
  • 面向列族,面向列族的存储和权限控制,支持列族独立查询。
  • 数据多版本,利用时间戳来标识版本
  • 数据无类型,所有数据以字节数据形式存储

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

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

相关文章

(2)(2.10) LTM telemetry

文章目录 前言 1 协议概述 2 配置 3 带FPV视频发射器的使用示例 4 使用TCM3105的FSK调制解调器示例 前言 轻量级 TeleMetry 协议 (LTM) 是一种单向通信协议(从飞行器下行的数据链路),可让你以低带宽/低波特率(通常为 2400 波…

Linux下如何编译C/C++代码?从.c到.exe经历了什么?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

百度智能小程序开发平台:SEO关键词推广优化 带完整的搭建教程

移动互联网的普及,小程序成为了众多企业和开发者关注的焦点。百度智能小程序开发平台为开发者提供了一站式的解决方案,帮助企业快速搭建并推广自己的小程序。本文将重点介绍百度智能小程序开发平台的SEO关键词推广优化功能,并带完整的搭建教程…

MySQL原理(三)锁定机制(1)综述

一、介绍: 1、锁的本质 业务场景中存在共享资源,多个进程或线程需要竞争获取并处理共享资源,为了保证公平、可靠、结果正确等业务逻辑,要把并发执行的问题变为串行,串行时引入第三方锁当成谁有权限来操作共享资源的判…

06 单目初始化器 Initializer

文章目录 06 单目初始化器 Initializer6.1 成员变量/函数6.2 初始化函数 Initialize()6.3 计算基础矩阵 F \boldsymbol{F} F 和单应矩阵 H \boldsymbol{H} H6.3.1 RANSAC 算法6.3.2 八点法计算 F \boldsymbol{F} F 矩阵: ComputeF21()6.3.3 计算基础矩阵 F \boldsymbol{F} …

基于yolov2深度学习网络的视频手部检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 输入mp4格式的视频文件进行测试,视频格式为1080p30. 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................…

大数据分析案例-基于随机森林算法构建电影票房预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

软连接和硬链接

1.软连接 软连接是一个独立的文件,有独立的inode,也有独立的数据块,它的数据块里面保存的是指向的文件路径-------相当于windows的快捷方式 删除一个软连接 2.硬链接 所谓的建立硬链接,本质就是在特定目录的数据块中新增文件名和…

【大数据】Flink SQL 语法篇(三):窗口聚合(TUMBLE、HOP、SESSION、CUMULATE)

Flink SQL 语法篇(三):窗口聚合 1.滚动窗口(TUMBLE)1.1 Group Window Aggregation 方案(支持 Batch / Streaming 任务)1.2 Windowing TVF 方案(1.13 只支持 Streaming 任务&#xff…

sqli-labs-master靶场训练笔记(1-22|新手村)

2024.1.21 level-1 (单引号装饰) 先根据提示建立一个get请求 在尝试使用单个单引号测试,成功发现语句未闭合报错 然后反手一个 order by 得到数据库共3列,-- 后面加字母防止浏览器吃掉 -- 操作(有些会&#xff09…

Java关于Excel文件的导入导出

人生如梦 荣华富贵 如木槿之花 朝荣夕逝 需求 导出: 能够将库表内的数据导出多个Excel表,并且生成一个压缩包,提供用户下载导入: 能够将一个压缩包内的多个Excel表解压,并获取表内的所有数据 FileUtils 工具类 publi…

GPT-SoVITS 本地搭建踩坑

GPT-SoVITS 本地搭建踩坑 前言搭建下载解压VSCode打开安装依赖包修改内容1.重新安装版本2.修改文件内容 运行总结 前言 传言GPT-SoVITS作为当前与BertVits2.3并列的TTS大模型,于是本地搭了一个,简单说一下坑。 搭建 下载 到GitHub点击此处下载 http…

【三维重建】运动恢复结构(SfM)

运动恢复结构是通过三维场景的多张图像,恢复出该场景的三维结构信息以及每张图片对应的摄像机参数。 欧式结构恢复(内参已知,外参未知) 欧式结构恢复问题: 已知:1、n个三维点在m张图像中的对应点的像素坐标 2、相机内参 求解&…

指针的深入了解6

1.回调函数 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数 时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用&#xff0…

字符串:getline、删除子串.erase()函数、插入子串.insert()函数

getline具体用法: 1、函数形式 getline ( cin,字符串类型:变量名);//默认以换行符结束 getline (cin, 字符串类型:变量名, ‘指定的结束符’); //指定换行结束符 2注意事项: 1)如果在使用getline()之前有使用scanf(…

Java基础--异常

异常 将程序执行中发生的不正常情况称为“异常”(语法错误和逻辑错误不是异常)。 异常时间分为两大类: 1.Error(错误):Java虚拟机无法解决的严重问题。Error 是严重错误,程序会崩溃。 2.Except…

【AI视野·今日NLP 自然语言处理论文速览 第七十七期】Mon, 15 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 15 Jan 2024 Totally 57 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Machine Translation Models are Zero-Shot Detectors of Translation Direction Authors Michelle Wastl, Ja…

奥威-金蝶BI方案:企业获利能力该这样看

获利能力、偿债能力、营运能力是企业经营发展中需要密切关注的三大基础能力,通常可通过详细的数据分析可视化来获知。那么,怎么分析企业获利能力?奥威-金蝶BI方案做了个示范。 按年看 按月看 一般来说,我们会做成两张报表&#x…

代码随想录算法刷题训练营day20

代码随想录算法刷题训练营day20:LeetCode(654)最大二叉树、LeetCode(617)合并二叉树、LeetCode(700)二叉搜索树中的搜索、LeetCode(700)二叉搜索树中的搜索、LeetCode(98)验证二叉搜索 LeetCode(654)最大二叉树 题目 代码 import java.util.Arrays;/*** Definit…

Java面试架构篇【一览众山小】

文章目录 🚡 简介☀️ Spring🐥 体系结构🐠 生命周期 🍁 SpringMVC🌰 执行流程 🌜 SpringBoot🌍 核心组件🎍 自动装配🎑 3.0升级 🔅 spring Cloud Alibaba&am…