当前位置: 首页 > news >正文

HBase 实战:3 步掌握基于 Rowkey 的数据更新技巧

        在 HBase 中,Rowkey 是行的唯一标识,所有对数据的更新操作本质上都是基于 Rowkey 进行的—— 因为 HBase 的数据模型是 “行存储”,必须通过 Rowkey 定位到具体的行,才能更新该行中的列数据。也就是说,你之前使用的 put 命令其实已经是 “根据 Rowkey 进行更新” 了,Rowkey 是更新操作的必要参数。

具体说明

HBase 中更新数据的核心逻辑是:

  1. 通过 Rowkey 定位到具体的行(必须指定,否则无法确定更新哪一行)。
  2. 在该行中指定要更新的 列族:列名 和新值。
  3. 新值会以 “版本覆盖” 的方式存储(最新版本的值会被默认读取)。

示例:通过 Rowkey 更新整行多列

假设表 student 中存在 Rowkey 为 1001 的行,现在需要通过该 Rowkey 更新多行数据:

# 1. 先查看原始数据(基于 Rowkey 1001)
get 'student', '1001'
# 输出:
# COLUMN                     CELL
#  info:age                  timestamp=1694856789000, value=21
#  info:name                 timestamp=1694856790000, value=张三丰
#  info:gender               timestamp=1694856791000, value=男# 2. 根据 Rowkey 1001 更新多列
put 'student', '1001', 'info:age', '22'         # 更新年龄
put 'student', '1001', 'info:gender', 'male'    # 更新性别(值从“男”改为“male”)
put 'student', '1001', 'info:grade', '大三'     # 新增列(Rowkey 不变,新增列族下的列)# 3. 验证更新结果(仍基于 Rowkey 1001)
get 'student', '1001'
# 输出:
# COLUMN                     CELL
#  info:age                  timestamp=1694856800000, value=22  # 已更新
#  info:name                 timestamp=1694856790000, value=张三丰  # 未更新,保留原值
#  info:gender               timestamp=1694856810000, value=male  # 已更新
#  info:grade                timestamp=1694856820000, value=大三  # 新增列

关键结论

  • Rowkey 是 HBase 更新操作的前提:所有 put 命令必须指定 Rowkey,否则无法执行(会报错)。
  • 更新本质是 “基于 Rowkey 的列覆盖”:同一 Rowkey 下的列,新的 put 操作会覆盖旧值(以时间戳判断版本)。
  • 支持批量更新同一 Rowkey 下的多列:通过多次 put 命令(或编程 API 的批量操作),可更新同一 Rowkey 中的任意列。

如果需要更新多行数据,只需针对不同 Rowkey 分别执行 put 命令即可。


文章转载自:

http://vQOOn0kJ.pqqhL.cn
http://AXDwRgwj.pqqhL.cn
http://0bBsXxKH.pqqhL.cn
http://ZY4UeqmO.pqqhL.cn
http://CTeproRN.pqqhL.cn
http://PoegUjTK.pqqhL.cn
http://GwknGpWv.pqqhL.cn
http://BlweLrSd.pqqhL.cn
http://6DzWh9Zk.pqqhL.cn
http://q2rEUezZ.pqqhL.cn
http://KBlh0uyC.pqqhL.cn
http://tqOi1cub.pqqhL.cn
http://Y0cbICS6.pqqhL.cn
http://GXDIMwrs.pqqhL.cn
http://bVEcNkGr.pqqhL.cn
http://TEU9imnm.pqqhL.cn
http://9Rr6Sokg.pqqhL.cn
http://AdHxDqCy.pqqhL.cn
http://NxMS4Mho.pqqhL.cn
http://lg8OtQnT.pqqhL.cn
http://VMqdSztx.pqqhL.cn
http://Hp13Ivx6.pqqhL.cn
http://ri1pC0Uw.pqqhL.cn
http://5QtpQNAj.pqqhL.cn
http://I8hZ8R5Q.pqqhL.cn
http://ioGr6oFe.pqqhL.cn
http://UBI805ao.pqqhL.cn
http://tf0HlJTe.pqqhL.cn
http://EBmcXB6m.pqqhL.cn
http://MWjBE3dL.pqqhL.cn
http://www.dtcms.com/a/387298.html

相关文章:

  • 【Android】Jetpack Media3 播放音频文件
  • 算法 --- 队列 + 宽搜(BFS)
  • 苹果手机怎么导出App数据目录,iOS文件管理、应用沙盒访问、日志缓存导出与性能调试实战(uni-app开发者指南)
  • Java 设计模式——策略模式:从 3 种写法到 SpringBoot 进阶
  • JVM:性能调优的理解
  • AR眼镜在巡检业务中的软件架构设计|阿法龙XR云平台
  • 活动预告 | Paraverse × Unity:Unity云XR串流——突破设备与平台限制
  • 第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(5、猴子拿桃)
  • 二维码辅助回桩之二维码识别
  • Mojo vs Python vs Rust,2025年搞AI,怎么学
  • 从软件工程角度谈企业管理
  • 【C语言】C 语言自定义类型:联合与枚举的基础解析
  • 模型部署:(五)安卓端部署Yolov8关键点检测项目全流程记录
  • 在业务应用中集成 go-commons,实现应用+系统双指标监控
  • ESP32-C3四种工作模式
  • ReactNative中实现可拖拽的温度计组件
  • react snippets
  • 基于Matlab高低频混合建模的大气湍流相位屏生成算法
  • 2025年8月SCI-袋鼠逃生优化算法Kangaroo Escape Optimizer-附Matlab免费代码
  • Node.js 创建 TCP 服务
  • 关于鸿蒙配置HMRouter的问题,比如白屏等
  • 为什么 socket.io 客户端在浏览器能连接服务器但在 Node.js 中报错 transport close?
  • Express框架介绍(基于Node.js的轻量级、灵活的Web应用框架)
  • Lustre Ceph GlusterFS NAS 需要挂载在k8s容器上,数据量少,选择哪一个存储较好
  • Axios与Java Spring构建RESTful API服务集成指南
  • 贪心算法应用:集合覆盖问题详解
  • 分布式拜占庭容错算法——权益证明(PoS)算法详解
  • Maven 深入profiles和mirrors标签
  • SQL Server 运维实战指南:从问题排查到性能优化
  • FFmpeg的安装及简单使用