HBase是一个分布式、面向列的数据库,可以用来存储非结构化和半结构化的松散数据,具有高可靠、高性能、面向列、可伸缩的特性。通过行键(RowKey)、列族(ColumnFamily)、列(Column)、时间戳(TimeTape)四个维度对数据进行定位。

首先启动Hadoop:切换目录,cd  /usr/local/hadoop,启动命令:  ./sbin/start-dfs.sh

    启动HBase:切换目录,cd  /usr/local/hbase,启动命令: ./bin/start-hbase.sh

(若配置了PATH环境变量,可直接输入start-dfs.shstart-hbase.sh 启动HBase)

Shell命令操作HBase

  进入Shell界面:bin/hbase  shell

  创建表:

    create  'Student' , 'name' , 'sex' , 'age' :student为表名,name、sex、age为列族

  查看表:

    list :列出HBase中有哪些表

    describe  ‘Student’ :查看表的具体信息

  添加数据:

    put  'Student' , '2017001' , 'name' , 'ZJ':向Student表添加学号为2017001,姓名为ZJ的一个数据,其行键为2017001。(HBase表中会有一个系统默认的属性作为行键,无需自行创建,默认为put命令操作中表名后的第一个数据。注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据,所以直接用shell命令插入数据效率很低,一般通过编程操作数据)

  查看数据:

    scan  'Student':查看Student表的全部数据

    get  'Student' , '2017001':查看行键为2017001的一行数据

  删除数据:

    delete  'Student' ,'2017001' , 'name':删除Student表中行键为2017001的姓名(删除一个数据) 

    deleteall  'Student' , '2017001':删除一行数据

    truncate  'Student':清除Student表的全部数据

  删除表:有两步,第一步先让该表不可用,第二步删除表

    ①disable  'Student'      ②drop  'Student'

  退出对数据库表的操作:exit

Java API编程操作数据库

建立连接:

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory; public class Connect
{
public static Configuration conf;
public static Connection conn;
public Admin admin;
public void init() throws IOException
{
conf=HBaseConfiguration.create();
conf.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
conn=ConnectionFactory.createConnection(conf);
admin=conn.getAdmin();
}
public void close() throws IOException
{
if(admin!=null)
admin.close();
if(conn!=null)
conn.close();
}
}

Connect

创建表: (create)

public void createTable() throws IOException
{
init();
TableName tName=TableName.valueOf(name);
if(admin.tableExists(tName))
System.out.println("table is exists!!!");
else
{
HTableDescriptor descriptor=new HTableDescriptor(tName);
for(String str:colFamily)
{
HColumnDescriptor col=new HColumnDescriptor(str);
descriptor.addFamily(col);
}
admin.createTable(descriptor);
System.out.println("Create table success!");
}
close();
}

createTable

 

查看Hbase中的表:(list)

public void list() throws IOException
{
init();
HTableDescriptor descriptors[]=admin.listTables();
for(HTableDescriptor des:descriptors)
System.out.println(des.getNameAsString());
close();
}

list

添加一个数据:(put)

public void insertRow(String name,String rowKey,String colFamily, String col,String value) throws IOException
{
init();
Table table=conn.getTable(TableName.valueOf(name));
Put put=new Put(rowKey.getBytes());
put.addColumn(colFamily.getBytes(), col.getBytes(), value.getBytes());
table.put(put);
table.close();
close();
}

insertRow

查看表中的全部数据:(scan)

public void getData(String name) throws IOException
{
init();
Table table=conn.getTable(TableName.valueOf(name));
Scan scan=new Scan();
ResultScanner scanner=table.getScanner(scan);
for(Result result:scanner)
{
showCell(result);
System.out.println();
}
table.close();
close();
}
public void showCell(Result result)
{
Cell[] cells=result.rawCells();
for(Cell cell:cells)
{
System.out.println("rowKey(行键):"+new String(CellUtil.cloneRow(cell)));
System.out.println("column Family(列族):"+new String(CellUtil.cloneFamily(cell)));
System.out.println("column Name(列限定符):"+new String(CellUtil.cloneQualifier(cell)));
System.out.println("Value(值):"+new String(CellUtil.cloneValue(cell)));
System.out.println("timeTamp(时间戳):"+cell.getTimestamp());
}
}

getData

删除表:(disable、drop)

public void deleteTable(String name) throws IOException
{
init();
TableName tName=TableName.valueOf(name);
if(admin.tableExists(tName))
{
admin.disableTable(tName);
admin.deleteTable(tName);
}
close();
}

deleteTable

常用HBase操作的更多相关文章

  1. 实验3- 熟悉常用的 HBase 操作

        石家庄铁道大学信息科学与技术学院               实验报告 2018年----2019年  第一学期                       题目:  熟悉常用的 HBase ...

  2. HBase操作(Shell与Java API)

    版权声明:本文为博主原创文章,未经博主允许不得转载.     转: http://blog.csdn.net/u013980127/article/details/52443155 下面代码在Hado ...

  3. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  4. SNMP常用数据操作

    SNMP常用数据操作 snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些.很多其它的比如Truth ...

  5. 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念

    本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...

  6. 总结Selenium自动化测试方法(四)WebDriver常用的操作

    四.WebDriver常用的操作 1.控制浏览器操作 #控制浏览器的大小 self.driver.set_window_size(480,800) #控制浏览器返回 self.driver.back( ...

  7. MATLAB 常用形态学操作函数

    常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...

  8. 关于Properties类常用的操作

    import java.io.*;import java.util.Enumeration;import java.util.Properties;/** * 关于Properties类常用的操作 * ...

  9. Jedis对Redis的常用命令操作

    本篇主要总结一些Jedis对Redis的常用命令操作: 1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令 一.项 ...

随机推荐

  1. 【阿里云IoT+YF3300】4.Alink物模型之事件触发

    名词解释:设备的功能模型之一,设备运行时的事件,事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数.如,某项任务完成的信息,或者设备发生故障或告警时的温度等,事件可以被订阅和推送. 在工控 ...

  2. NanoPi NEO2 学习笔记 1:安装系统、首次开机和一些设置

    初识NEO2 前几天搞到了一块NanoPi NEO2,A53的核心,512M内存,一个千兆网口,非常小的体积,质量也不错,非常满意,140元的价格可以买到这样一块ARM开发板也是非常划算了,非常适合低 ...

  3. 变量、常量、input、if语句

    Chapter2 Python基础 2.1 变量命名规则 字母.数字.下划线组成 不能数字开头 不能使用python中的关键字 变量名具有意义 推荐驼峰(ArvinGood).或者下划线方式 (arv ...

  4. python 18 re模块

    目录 re 模块 1. 正则表达式 2. 匹配模式 3. 常用方法 re 模块 1. 正则表达式 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的 ...

  5. Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源

    作者| 阿里云容器技术专家刘中巍(莫源) 导读:Kubernetes弹性伸缩系列文章为读者一一解析了各个弹性伸缩组件的相关原理和用法.本篇文章中,阿里云容器技术专家莫源将为你带来定时伸缩组件  kub ...

  6. Servlet 常用API学习(二)

    Servlet常用API学习 一.HTTP简介 WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议. HTTP是 hypertext transfer pr ...

  7. 【原创】Linux Suspend流程分析

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  8. MySQL8版本密码重置(老版本skip-grant-tables不起作用,MySQL服务开启之后立马关闭)

    原文:https://blog.csdn.net/gupao123456/article/details/80766154  MySQL密码重置思路MySQL的密码是存放在user表里面的,修改密码其 ...

  9. [工具使用]-利用latex管理创建自己的ACM模板

    从很早入坑ACM开始,便和各种算法的模板打着交道,虽然kaungbin的模板已经足够强大,但是自己在平常做题中也逐渐有着自己的一些模板,也有一些kuangbin模板中没有的更快的板子,虽然不确定时候以 ...

  10. UVA1486 Transportation 费用流 拆边。

    #include <iostream> #include <cstdio> #include <cmath> #include <queue> #inc ...