HBase ——Shell操作

Q:你觉得HBase是什么?

A:一种结构化的分布式数据存储系统,它基于列来存储数据。

基于HBase,可以实现以廉价PC机器集群存储海量数据的分布式数据库的解决方案。

一般用于数据量巨大但查询简单的场景,典型场景包括:账单记录,订单流水,交易记录,数据库的历史记录

  • 建立表

    HBase中没有数据库的概念,但是存在命名空间的概念,在使用上类似库名,但实际上只是一个目录名。

    另外要记住,HBase中大部分数据都是以HashMap的形式组织的,因此很多时候都能看到类似 key : value的格式。命名空间表的定义也是如此。

    任何表的定义必须有表名和列族,可以没有命名空间

    create 'ns1:tb1','cf1' #有命名空间的表,ns1是命名空间,cf1是列族
    create 'tb1','cf1'
    list #查看已有表
  • 删除表

    删除表之前必须了解,HBase作为分布式数据库是没有锁的,更不支持事务。因此,HBase的删除表之前必须先禁用表。

    disable 'tb1'
    drop 'tb1'
  • 插入数据

    在定义表的时候我们已经指定了列族,但是光有列族是不足以确定唯一数据的。插入数据时还必须指定行键和列键。

    插入数据,包括创建表都有多种属性可选,在此只介绍最基本的。hbase shell输入命令不加参数即可获得帮助指南。

    put 'tb1','rk1','cf1:c1','value' #rk1是行键,c1是属于cf1族的列健
  • 查找数据

    在上面已经提到了HBase适用于简单的查询业务场景,但是这种简单是相对于SQL的关联查找而言的。HBase在单表查询是足够强大的。

    HBase中记录分为三部分,ROW、COLUMN和CELL,COLUMN分为family列族和qualifier列键,CELL分为TimeStamp和Value。可以看出,一个唯一的value是由rowkey、family、qualifier、timestamp共同决定的。查找数据也是遵循的也是这个逻辑。

    get 'tb1','rk1'[,'cf1[:c1]'] #简单查找
    get 'tb1','rk1',{COLUMN=>['C1','C2','C3'],TIMESTAMP=>ts1} #多条件
  • 扫描数据

    get每次只能查找一个行键,而scan扫描是条件查找整张表

    scan 'tb1',{condition} #condition可以是列族/键、时间、版本、范围,具体见帮助
  • 删除数据

    hbase是列模式存储的,因此每次删除只能删除指定列键的row的value

    delete 'tb1','rk1','cf1[:c1]' #删除的是一条记录
  • 表操作

    Here is some help for this command:
    Alter a table. If the "hbase.online.schema.update.enable" property is set to
    false, then the table must be disabled (see help 'disable'). If the
    "hbase.online.schema.update.enable" property is set to true, tables can be
    altered without disabling them first. Altering enabled tables has caused problems
    in the past, so use caution and test it before using in production. You can use the alter command to add,
    modify or delete column families or change table configuration options.
    Column families work in a similar way as the 'create' command. The column family
    specification can either be a name string, or a dictionary with the NAME attribute.
    Dictionaries are described in the output of the 'help' command, with no arguments. For example, to change or add the 'f1' column family in table 't1' from
    current value to keep a maximum of 5 cell VERSIONS, do: hbase> alter 't1', NAME => 'f1', VERSIONS => 5 You can operate on several column families: hbase> alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5} To delete the 'f1' column family in table 'ns1:t1', use one of: hbase> alter 'ns1:t1', NAME => 'f1', METHOD => 'delete'
    hbase> alter 'ns1:t1', 'delete' => 'f1' You can also change table-scope attributes like MAX_FILESIZE, READONLY,
    MEMSTORE_FLUSHSIZE, DURABILITY, etc. These can be put at the end;
    for example, to change the max size of a region to 128MB, do: hbase> alter 't1', MAX_FILESIZE => '134217728' You can add a table coprocessor by setting a table coprocessor attribute: hbase> alter 't1',
    'coprocessor'=>'hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2' Since you can have multiple coprocessors configured for a table, a
    sequence number will be automatically appended to the attribute name
    to uniquely identify it. The coprocessor attribute must match the pattern below in order for
    the framework to understand how to load the coprocessor classes: [coprocessor jar file location] | class name | [priority] | [arguments] You can also set configuration settings specific to this table or column family: hbase> alter 't1', CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}
    hbase> alter 't1', {NAME => 'f2', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}} You can also remove a table-scope attribute: hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE' hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'coprocessor$1' You can also set REGION_REPLICATION: hbase> alter 't1', {REGION_REPLICATION => 2} There could be more than one alteration in one command: hbase> alter 't1', { NAME => 'f1', VERSIONS => 3 },
    { MAX_FILESIZE => '134217728' }, { METHOD => 'delete', NAME => 'f2' },
    OWNER => 'johndoe', METADATA => { 'mykey' => 'myvalue' }

数据导入导出

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \

-Dimporttsv.separator=, \

-Dimporttsv.columns="HBASE_ROW_KEY,order:numb,order:date" \

customer file:///home/vagrant/hbase_import_data.csv

s注:customer是要导入数据的表名,order.numb为列键

注2:这是sh命令,运行时如出现hdfs端无jar包文件异常,将本地hbase上lib目录拷贝到hdfs

HBase ——Shell操作的更多相关文章

  1. 大数据技术之_11_HBase学习_01_HBase 简介+HBase 安装+HBase Shell 操作+HBase 数据结构+HBase 原理

    第1章 HBase 简介1.1 什么是 HBase1.2 HBase 特点1.3 HBase 架构1.3 HBase 中的角色1.3.1 HMaster1.3.2 RegionServer1.3.3 ...

  2. HBase Shell操作

    Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统.     Hbase不同于一般的关系型数据库(RDBMS ...

  3. 云计算与大数据实验:Hbase shell操作用户表

    [实验目的] 1)了解hbase服务 2)学会hbase shell命令操作用户表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...

  4. 云计算与大数据实验:Hbase shell操作成绩表

    [实验目的] 1)了解hbase服务 2)学会hbase shell命令操作成绩表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...

  5. HBase基础之常用过滤器hbase shell操作(转)

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value)-- sf: column family o ...

  6. HBase基础之常用过滤器hbase shell操作

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value) -- sf: column family ...

  7. Hbase shell 操作记录

    查看hbase版本 hbase(main):002:0> version 2.1.0-cdh6.2.0, rUnknown, Wed Mar 13 23:39:58 PDT 2019 Took ...

  8. Hbase Shell命令详解+API操作

    HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...

  9. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

随机推荐

  1. linux-Navicat连接linux远程数据

    linux-Navicat连接linux远程数据 (一)登陆数据库 (二)创建用户用于远程连接 GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED B ...

  2. 开发环境管理利器Vagrant

    引言 不知道你是否经历过,开发环境与生产环境不一致.Windows开发和Linux上的包效果不一样.在我这运行时好的啊 等等等问题,那有没有解决方法呢? 答案就是Vagrant.Docker 1.简介 ...

  3. jquery的ajax发送请求后前端不能实时更新

    在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱(比如说多次请求却没有响应). 错误代码如下: $.get("fetch.php") .done(f ...

  4. ness使用-漏扫

    1.登录nessus后,会自动弹出目标输入弹框: 输入目标IP,可通过CIDR表示法(192.168.0.0/80),范围(192.168.0.1-192.168.0.255),或逗号分隔(192.1 ...

  5. VScode 连接虚拟机

    VScode 连接虚拟机 在VScode上面使用SSH连接虚拟机,编写代码以及运行都将会方便许多 打开VScode,安装Remote-SSH插件 配置SSH连接信息 点击左侧第四个图标,然后单击设置按 ...

  6. Codeforces Round #533 (Div. 2) B. Zuhair and Strings(字符串)

    #include <bits/stdc++.h> using namespace std; int main() { int n,k;cin>>n>>k; stri ...

  7. 【noi 2.5_7834】分成互质组(dfs)

    有2种dfs的方法: 1.存下每个组的各个数和其质因数,每次对于新的一个数,与各组比对是否互质,再添加或不添加入该组. 2.不存质因数了,直接用gcd,更加快.P.S.然而我不知道为什么RE,若有好心 ...

  8. hdu5534 Partial Tree

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submissi ...

  9. 笔记-EF Core 并发冲突与令牌

    并发标记并发分悲观并发和乐观并发.悲观并发:比如有两个用户A,B,同时登录系统修改一个文档,如果A先进入修改,则系统会把该文档 锁住,B就没办法打开了,只有等A修改完,完全退出的时候B才能进入修改.乐 ...

  10. 二进制安装kubernetes(三) kube-controller-manager组件安装

    Controller Manager简介 详细介绍请参考链接:Kubernetes组件之kube-controller-manager Controller Manager作为集群内部的管理控制中心, ...