【大数据入门核心技术-HBase】(七)HBase Python API 操作
admin
2024-03-27 23:04:57
0

5) 单元格(Cell)

每一个行键、列族、列标识共同确定一个单元格,单元格的内容没有特定的数据类型,以二进制字节来存储。每个单元格保存着同一份数据的多个版本,不同时间版本的数据按照时间先后顺序排序,最新的数据排在最前面。单元格可以用 元组来进行访问。

6) 时间戳(Timestamp)

在默认情况下,每一个单元格插入数据时都会用时间戳来进行版本标识。读取单元格数据时,如果时间戳没有被指定,则默认返回最新的数据;写入新的单元格数据时,如果没有设置时间戳,默认使用当前时间。每一个列族的单元数据的版本数量都被 HBase 单独维护,默认情况下 HBase 保留 3 个版本数据。

数据模型

表是 HBase 中数据的逻辑组织方式,从用户视角来看,HBase 表的逻辑模型如表 1 所示。HBase 中的一个表有若干行,每行有多个列族,每个列族中包含多个列,而列中的值有多个版本。

表 1 展示的是 HBase 中的学生信息表 Student,有三行记录和两个列族,行键分别为 0001、0002 和 0003,两个列族分别为 Stulnfo 和 Grades,每个列族中含有若干列,如列族 Stulnfo 包括 Name、Age、Sex 和 Class 四列,列族 Grades 包括 BigData、Computer 和 Math 三列。

在 HBase 中,列不是固定的表结构,在创建表时,不需要预先定义列名,可以在插入数据时临时创建。

从表 1 的逻辑模型来看,HBase 表与关系型数据库中的表结构之间似乎没有太大差异,只不过多了列族的概念。但实际上是有很大差别的,关系型数据库中表的结构需要预先定义,如列名及其数据类型和值域等内容。

如果需要添加新列,则需要修改表结构,这会对已有的数据产生很大影响。同时,关系型数据库中的表为每个列预留了存储空间,即表 1 中的空白 Cell 数据在关系型数据库中以“NULL”值占用存储空间。因此,对稀疏数据来说,关系型数据库表中就会产生很多“NULL”值,消耗大量的存储空间。

在 HBase 中,如表 1 中的空白 Cell 在物理上是不占用存储空间的,即不会存储空白的键值对。因此,若一个请求为获取 RowKey 为 0001 在 T2 时间的 Stulnfo:class 值时,其结果为空。类似地,若一个请求为获取 RowKey 为 0002 在 T1 时间的 Grades Computer 值时,其结果也为空。

与面向行存储的关系型数据库不同,HBase 是面向列存储的,且在实际的物理存储中,列族是分开存储的,即表 1 中的学生信息表将被存储为 Stulnfo 和 Grades 两个部分。

表 2 展示了 Stulnfo 这个列族的实际物理存储方式,列族 Grades 的存储与之类似。在表 2 中可以看到空白 Cell 是没有被存储下来的。

相关内容

热门资讯

亚洲攀岩锦标赛攀石决赛收官 4月10日,在四川眉山举行的2026年亚洲攀岩锦标赛暨名古屋亚运会资格赛男、女子攀石决赛收官,日本队...
中国首个海上二氧化碳封存项目累... 9月10日消息,从中国海油获悉,位于珠江口盆地的我国首个海上二氧化碳封存示范项目累计碳封存量突破1亿...
现货黄金升破3660美元/盎司 9月9日消息,现货黄金涨0.69%,报3660.85美元/盎司,续创历史新高。(科股宝播报)
阿里巴巴美股涨超4% 9月9日消息,阿里巴巴美股涨超4%,创2021年11月以来新高。巴克莱银行将阿里巴巴目标价从145美...
美股加密货币概念股多数走强 9月9日消息,美股加密货币概念股多数走强,CaliberCos涨超6倍,Circle涨超4%,IRE...
龙软科技:股东李尚蓉拟询价转让... 9月9日消息,龙软科技(688078.SH)公告称,股东李尚蓉计划通过询价转让方式转让1,253,2...
环保又增效!湖北力推蛋鸭旱养新... 蛋鸡蛋鸭养殖一直是我省的特色产业,2026年,院士专家畜牧产业科技服务“515”行动专家团,计划在湖...
西班牙呼吁欧盟成员国暂停与以色... △桑切斯(资料图) 当地时间4月10日,西班牙首相桑切斯敦促欧盟成员国暂停与以色列的联系国协定。桑切...
张雪在扛旗,严凯别再躲了 严凯... 出品|虎嗅汽车组作者|邢书博2026年春天,张雪和严凯吃了顿饭。握手,微笑,互道恭喜。场面上一团和气...
科技·叙事丨“科特估”开启“十... 中经记者 孙汝祥 夏欣 北京报道“‘十五五’新时期,‘科特估’将继续以‘三个服务’为使命,进一步积极...