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

分布式数据库——HBase基本操作

启动HBase:

1.启动hadoop,进入hadoop的sbin中

cd /opt/hadoop/sbin/

2.初始化namenode

hdfs namenode -format

 3.启动hdfs

./start-all.sh

4.启动hbase 

cd /opt/hbase/bin
./start-hbase.sh

5.使用jps查看进程

jps

以下图片则是hbase启动成功~ 

运行HBase 

./hbase shell

接下来就可以开始建表啦~ 

  shell操作:

HBase创建数据库建表:

语法:

create '表名','列族名1','列族名2',...,'列族名N'

 查看所有数据库:

list

 查看表结构:

discribe '表名'

计算表中所有记录的数量:

count '表名'

 

HBase数据库表数据的增、删、查、改

(1)HBase增加数据的语法格式:

put '表名','rowKey','列族:列','值'

(2)HBase查询数据的语法格式:

scan查询所有表记录

scan '表名'

 

 get查询某个rowKey的所有记录

get '表名','rowKey'

 

 get查询某个rowKey列族的记录

get '表名','rowKey','列族'

get查询rowKey列族的某个列记录

get '表名','rowKey','列族:列'

(2)HBase 删除数据:

删除表的所有记录:(drop)

disable '表名'
drop '表名'

删除表的某一条记录:(delete)

delete '表名','行名','列族:列'

 

 删除表的整行记录

deleteall '表名','rowKey'

 

清空表的所有记录

truncate '表名'

 

(4)HBase更新数据

用put重新写一遍,可以覆盖

 下面以建如下表结构为例

 1.创建一个名为student的表,字段包括stuInfo和grades

creat 'student','stuInfo','grades'

 

 2.向表中插入数据

put 'student','001','stuInfo:name','alice' 
put 'student','001','stuInfo:age','18' 
put 'student','001','stuInfo:sex','female'
put 'student','001','grades:English','80'
put 'student','001','grades:math','90'
put 'student','002','stuInfo:name','nancy'
put 'student','002','stuInfo:sex','male'
put 'student','002','stuInfo:class','1802'  
put 'student','002','grades:English','85'
put 'student','002','grades:math','78'
put 'student','002','grades:bigdata','88'
put 'student','003','stuInfo:name','harry' 
put 'student','003','stuInfo:age','19' 
put 'student','003','stuInfo:sex','male'
put 'student','003','grades:English','90'
put 'student','003','grades:bigdata','90'

过滤操作:

1.行键过滤器(RowFilter、KeyOnlyFilter、FirstKeyOnlyFilter等)

格式:scan '表名',{FILTER=>"过滤器(比较运算符,'比较器')"}

(1)RowFilter:针对行键进行过滤

   例1:  显示行键前缀0开头的键值对
scan 'student',{FILTER=>"RowFilter(=,'substring:001')"}

 例2:显示行键字节顺序大于002的键值对
scan 'student',FILTER=>"RowFilter(>,'binary:002')"

(2)PrefixFilter:行键前缀过滤器

 例1:扫描前缀为001的行键
scan 'student',FILTER=>"PrefixFilter('001')"

 (3)FirstKeyOnlyFilter:扫描全表,显示每个逻辑行的第一个键值对

scan 'student',FILTER=>"FirstKeyOnlyFilter()"

(4)InclusiveStopFilter:替代EndRow返回终止条件行

例:扫描显示行键001道002的范围内的键值对 
scan 'student',{STARTROW=>'001',FILTER=>"InclusiveStopFilter('002')"}

等同于:

scan 'student',{STARTROW=>'001',ENDROW=>'003'}

2.列族与过滤器

(1)Family:针对列族进行比较和过滤

例1:显示列族前缀为stu开头的键值对

scan 'student',FILTER=>"FamilyFilter(=,'substring:stu')"scan 'student',FILTER=>"FamilyFilter(=,'binary:stu')"

(2)QualifierFilter:列标识过滤器

例:显示列名为name的记录

scan 'student',FILTER=>"QualifierFilter(=,'substring:name')"

等价于 

 (3)ColumnPrefixFilter:对列名前缀进行过滤

例:显示列名为name的记录

 scan 'student',FILTER=>"ColumnPrefixFilter('name')"

等价于 

scan 'student',FILTER=>"QualifierFilter(=,'substring:name')"

(4)MultipleColumnPrefixFilter:可以指定多个前缀

例:显示列名为name和age的记录

 scan 'student',FILTER=>"ColumnPrefixFilter('name')"scan 'student',FILTER=>"MultipleColumnPrefixFilter('name','age')"

(5)ColumnRangeFilter:设置范围按字典序对列名进行过滤

例:

scan 'student',FILTER=>"ColumnRangeFilter('bi',true,'na',true)"

 3.值过滤器

(1)ValueFilter:值过滤器

例:查询等于19的所有键值对

scan 'student',FILTER=>"ValueFilter(=,'binary:19') "
scan 'student',FILTER=>"ValueFilter(=,'substring:19')"

 

(2)SingleColumnValueFilter:在指定的列族和列中进行值过滤器

例:查询studiofo列族age列中值等于19的所有键值对

scan 'student',{COLUMN=>'stuInfo:age',FILTER=>"SingleColumnValueFilter('stuInfo','age',=,'binary:19')"}

4.其他过滤器

(1)ColumnCountGetFilter:限制每个逻辑行返回的键值对数

例:返回行键位001的前3个键值对

get 'student','001',FILTER=>"ColumnCountGetFilter(3)"

(2)PageFilter:基于行的分页过滤器,设置返回的行数

例:显示1行

scan 'student',FILTER=>"PageFilter(1)"

(3)ColumnPaginationFilter:基于列的进行分页过滤器,需要设置偏移量与返回数量 

例:显示每行第1列之后的第二个键值对

scan 'student',FILTER=>"ColumnPaginationFilter(2,1)"

相关文章:

  • 认识 Linux操作系统
  • Linux【基础指令汇总】
  • 地区环境保护支出数据(2007-2023年)
  • WindowsTerminal中oh-my-posh样式的cmd、git-bash、cmder配置参数
  • SpringCloud-EurekaClient
  • Linux云计算 |【第四阶段】RDBMS1-DAY2
  • Python 在区块链智能合约开发中的应用与实践
  • 数字化转型中的信息技术:驱动力与挑战
  • 芝法酱学习笔记(0.5)——使用jenkins做自动打包
  • 【 Java 】工具类 —— Collections 与 Arrays 的实用操作全解析
  • Llama3:全模型GQA与tiktoken分词的新突破
  • BFS之最短路径模型
  • 解决银河麒麟V10中/data目录执行权限问题
  • JDK1.8安装配置教程(图文结合,最简洁易懂)
  • undeclared identifier ‘UNITY_PREV_MATRIX_M‘ - Unity Shader自己写URP,引用内部 hlsl
  • 《深入 React 技术栈》
  • 0基础学习移动端适配
  • Docker 笔记(2):Dockerfile
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • javascript从右向左截取指定位数字符的3种方法
  • maya建模与骨骼动画快速实现人工鱼
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于Flux,Vuex,Redux的思考
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 目录与文件属性:编写ls
  • 深度学习在携程攻略社区的应用
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • ( 10 )MySQL中的外键
  • (1)(1.13) SiK无线电高级配置(五)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (南京观海微电子)——I3C协议介绍
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转载)虚函数剖析
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .gitignore文件使用
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NetCore发布到IIS
  • .Net的DataSet直接与SQL2005交互
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @ResponseBody
  • @SuppressWarnings(unchecked)代码的作用
  • [ 数据结构 - C++] AVL树原理及实现
  • [20140403]查询是否产生日志
  • [Android View] 可绘制形状 (Shape Xml)
  • [APIO2012] 派遣 dispatching
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [CLickhouse] 学习小计