HBase:(二)基本操作

news2024/11/29 12:41:06

1.数据模型

术语解释
Name Space命名空间,类似于关系型数据库的 database 概念,每个命名空间下有多个表。HBase 两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表,default表是用户默认使用的命名空间。
 
Table类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。因为数据存储时稀疏的,所有往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。
 
RowHBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。
ColumnHBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符)进行限定,例如 info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。
Time Stamp用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入 HBase 的时间。
Cell由{rowkey, column Family:column Qualifier, timestamp} 唯一确定的单元。cell 中的数据全部是字节码形式存贮。

2.HBase基本操作

2.1namespace

2.1.1创建命名空间

        使用 help 语法查看命令如何使用

 help 'create_namespace'

创建 命名空间语法 如下: 

 举例:

create_namesapce 'bigdata'

2.1.2查看所有命名空间

list_namespace

2.2DDL语句

2.2.1创建表

        创建表有两种情况:

                1.多个列族,且有列族属性

                2.单个列族,且无列族属性

                3.多个列族,且无列族属性

情况1:创建表格 student,两个列族。info 列族数据维护的版本数为 5

 create 'bigdata:student',{NAME => 'info',VERSIONS => 5},{NAME => 'msg'}

情况2:创建表格 studen1,1个列族。info默认版本数为 1

 create 'bigdata:student1','info'

情况3:创建表格 studen2,1个列族。info,msg默认版本数为 1

 create 'bigdata:student2','info','msg'

*****默认版本数与指定版本数区别:

2.2.2查看表

查看所有表

list

查看单表详情

 describe 'bigdata:student'

2.2.3修改表

(1)增加列族和修改信息都使用覆盖的方法

 alter 'bigdata:student1', {NAME => 'msg', VERSIONS => 3}

之前 bigdata命名空间下的 student1 只有一个info列族,上面新增列族之后如图:

 (2)删除列族

#第一种方式
 alter 'bigdata:student1', NAME => 'msg', METHOD => 'delete'

#第二种方式
 alter 'bigdata:student1', 'delete' => 'msg'

2.2.4删除表

#方式一:
disable 'bigdata:student2'

#方式二:
drop 'bigdata:student2'

2.3DML语句

2.3.1写入数据

        hbase创建表时,不需要创建列,直接写入即可。

        如果重复写入相同 rowKey,相同列的数据,会写入多个版本进行覆盖。

 put 'bigdata:student','1001','info:name','zhangsan'
 put 'bigdata:student','1001','info:name','lisi'
 put 'bigdata:student','1001','info:age','22'

2.3.2读取数据

 读取数据有2种方式:get 、scan

        get 最大范围是一行数据,也可以进行列的过滤,读取数据的结果为多行 cell
get 'bigdata:student','1001'

get 'bigdata:student','1001' , {COLUMN => 'info:name'}

        读取版本数,查出student这张表 的name 字段两个版本,2.3.1中 put写入数据 第一次1001 name 为张三,第二次写入1001 name 为lisi

get 'bigdata:student','1001' , {COLUMN => 'info:name', VERSIONS => 2}

        scan可以扫描数据,能读取多行数据,使用startRow 和 stopRow 来控制读取的数据,默认范围左闭右开。

scan 'bigdata:student',{STARTROW => '1001',STOPROW => '1002'}

2.3.3删除数据

        删除数据的方法有两个:delete deleteall
        delete 表示删除一个版本的数据,即为 1 cell ,不填写版本默认删除最新的一个版本
        
 delete 'bigdata:student','1001','info:name'

        deleteall 表示删除所有版本的数据,即为当前行当前列的多个 cell

 deleteall 'bigdata:student','1001','info:name'

实际开发中使用 shell 的机会不多

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

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

相关文章

数据治理8大核心模块建设

数据治理是一个去中心化、多元参与的系统工程。一个全面且明确的数据治理体系,可以帮助组织构建生态式、协同化治理路径,最大化地提升整体数据质量,实现数据战略,激活新型生产力。 本文以元数据、主数据、数据标准、数据质量、数…

2023年「身份安全」行业白皮书、研究报告、案例合集速览!

随着企业将其业务向数字化、云和移动化转变,身份的数量、类型都呈爆炸式增长。这也带来了全新维度的威胁格局,如果保护不当,可能会为攻击者提供更多可利用的攻击路径。 虽然许多工具和技术旨在保障身份安全,但身份威胁检测和响应…

chatgpt赋能python:Python主窗口名字怎么修改?

Python主窗口名字怎么修改? Python是一种解释型的编程语言,广泛应用于Web开发、数据科学、人工智能等领域。在Python编写的GUI程序中,窗口名字是非常重要的一个元素,因为它可以直观地让用户知道当前的应用程序是什么。在这篇文章…

IP地址规划方法

一、IP地址规划的基本步骤: (1)判断用户对网络以及主机数的需求; (2)计算满足用户需要的基本网络地址结构; (3)计算地址掩码; (4)…

工程swift与OC混编改造

最近公司项目准备引入swift,由于目前工程已经完成了组件化不再是简单的单仓工程,所以需要进行混编改造。下面记录一下自己对工程进行混编改造的思考以及过程。 混编原理 看了很多文档,比较少有讲混编原理的,这里简单介绍一下语言…

第十九章_手写Redis分布式锁

锁的种类 单机版同一个JVM虚拟机内synchronized或者Lock接口。 分布式多个不同JVM虚拟机,单机的线程锁机制不再起作用,资源类在不同的服务器之间共享了。 一个靠谱分布式锁需要具备的条件和刚需 独占性 :OnlyOne,任何时刻只能有且…

linux-静态库制作与使用

创建2个目录进行创建与使用的演示 创建静态库 准备源文件与头文件 查看所有源文件与头文件 将源文件编译.o文件,然后将.o文件打包为静态库 gcc -c mymath.c -o mymath.o -stdc99 gcc -c myprint.c -o myprint.o -stdc99 ar指令:打包多个.o文件为静态…

Fast-RCNN理论基础

一:总体流程 1、将图像输入网络得到相应的特征图。 2、使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵。 3、将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预…

测试老鸟整理,从手工进阶自动化测试,自动化之路清晰通透...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

主啊,我甚至不知道从何说起...

主啊,我甚至不知道从何说起...欢迎来到费米悖论。 外面有太多令人恐惧的事物。 我不会一一说过。然而,我读到的一件事情让我感到恐惧,我希望它也让你感到恐惧。 那么,就是这样... 这一切与一个问题有关:如果他们确实存在,为什么还没有来访?可怕的就是这些可能性。 根据《弄清外…

PCB布局思路分析 让你的布局从此简单!

分析好整个电路原理以后,就可以开始对整个电路进行布局布线,这一期,给大家介绍一下布局的思路和原则。1、首先,我们会对结构有要求的器件进行摆放,摆放的时候根据导入的结构,连接器得注意1脚的摆放位置。 ​…

财务共享中心搭建以后,如何进行精细化管理?

财务共享中心通过统一的财务流程、系统和人员配置实现了财务业务的标准化和规范化,为企业的财务管理提供了很大的便捷性和效率性,目前许多大型企业已纷纷开始搭建自己的财务共享中心。 但企业在搭建财务共享中心之后,往往会在运行初期遇上业…

Qt 帮助框架使用

前面我们已经简单了解了Qt帮助框架,本节我们将举例说明生成Qt帮助集,并自定义Qt Assistant。 准备工作 因为创建帮助系统建立帮助文件的前提是HTML文档文件已经存在,所以我们来弄一些简单的HTML文档(难的我还不会)。…

使用exe4j和Inno Setup把jar包转成exe

使用exe4j和Inno Setup把jar包转成exe exe4j下载地址:https://www.ej-technologies.com/download/exe4j/version_60 Inno Setup地址: 链接:https://pan.baidu.com/s/1Lh0JUuQgB6bkbACIx6MqdQ 提取码:dfox 一、exe4j将jar装车exe…

【OpenMMLab AI实战营第二期】二十分钟入门OpenMMLab笔记

OpenMMlab 主页:openmmlab.com 开源地址:https://github.com/open-mmlab 学习视频地址:https://www.bilibili.com/video/BV1js4y1i72P/ 概述 开源成为人工智能行业发展引擎 时间轴 theano:2007 Caffe:2013 Ten…

如何学习 WPF 详细教程

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

SPI通信以及与W2Q564(ROM)交换(读写)数据

一.SPI协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,允许芯片与外部设备以全双工、同步、串行方式通信。此接口可以被配置成主模式,并为外部从设备提供通信时钟(SCK)。接口还能以多主配…

uniapp(一) 之 小程序与uniapp 基础

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 i OS 、 Android 、 Web ( 响应式)、 以及各种小程序(微信 / 支付宝 / 百度 / 头条 / 飞书 /QQ/ 快手 / 钉 钉 / 淘宝)、 …

工程测量仪器:工程安全的保障者

工程仪器是现代工程建设中必不可少的工具,它们可以帮助企业对工程进行监控和管理,从而提高工程运行效率和安全性。在当前的工程建设领域,安全运营已成为企业的首要任务,而工程仪器正是实现这个目标的重要保障之一。 渗压计广泛应用…

数据(浮点数)在内存中的存储(2)

目录 浮点数家族 浮点数类型在内存中的存储 一.为什么说整型和浮点数在内存中存储方式不同(证明) 二.浮点数的存储规则 浮点数在计算机内部的表示方法 1.对于M的存储和取出规则 2.对于E的存储和取出时的规则 对前面代码结果进行解释: …