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. Selenium3 + Python3自动化测试系列六——等待方式

    等待 一.等待是什么,为什么要等待 在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等, 这时候,我们就需要使用等待,来判断上一步操 ...

  2. pt-online-schema-change使用详解

    一.pt-online介绍 pt-online-schema-change是percona公司开发的一个工具,在percona-toolkit包里面可以找到这个功能,它可以在线修改表结构 原理: 首先 ...

  3. python学习——字典和集合

    一.字典 1)字典介绍 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种不可变的结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 1)字典操作 &qu ...

  4. IDEA-Maven项目的jdk版本设置

    在 Intellij IDEA 中,我们需要设置 Settings 中的 Java Compiler 和 Project Structure 中的 Language Level 中的 jdk 版本为自 ...

  5. winform和WPF的那点事~

    一.定义 1.Winform的定义: WinForm是·Net开发平台中对Windows Form的一种称谓. 2.WPF的定义: WPF(Windows Presentation Foundatio ...

  6. flex布局 一侧固定宽度 一侧自适应

    想实现一个类似知乎个人主页的资料显示布局 类是下面这样 其中显示图片在一个div,Name和class和button在一个div中,使用justify-content: space-between; ...

  7. .NET Core 3.0及ASP.NET Core 3.0 前瞻

    前几天微软发布了 .NET Core 3.0 Preview 9 ,这是.NET Core 3.0 最后一个预览版. .NET Core 3.0 正式发布将在.NET Conf 上发布,.NET Co ...

  8. 【Redis】基础学习概览【汇总】

    一.概述 1.1 简介 1.2 Redis单线程好处 1.3 单线程弊端 1.4 Redis应用场景 二.安装.开启以及关闭 三.Redis基本数据类型 四.SpringBoot整合Redis 五.R ...

  9. .net core 部署到windows上的方法与 系统中相关问题的解决

    前言 Net core 项目部门在Windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容器(docker ) 基于一些exe 程序, ...

  10. Monte-Carlo Dropout

    Monte-Carlo Dropout Monte-Carlo Dropout(蒙特卡罗 dropout),简称 MC dropout. 一种从贝叶斯理论出发的 Dropout 理解方式,将 Drop ...