常用HBase操作
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.sh,start-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操作的更多相关文章
- 实验3- 熟悉常用的 HBase 操作
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 熟悉常用的 HBase ...
- HBase操作(Shell与Java API)
版权声明:本文为博主原创文章,未经博主允许不得转载. 转: http://blog.csdn.net/u013980127/article/details/52443155 下面代码在Hado ...
- Mysql常用表操作 | 单表查询
160905 常用表操作 1. mysql -u root -p 回车 输入密码 2. 显示数据库列表 show databases 3. 进入某数据库 use database data ...
- SNMP常用数据操作
SNMP常用数据操作 snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些.很多其它的比如Truth ...
- 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念
本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...
- 总结Selenium自动化测试方法(四)WebDriver常用的操作
四.WebDriver常用的操作 1.控制浏览器操作 #控制浏览器的大小 self.driver.set_window_size(480,800) #控制浏览器返回 self.driver.back( ...
- MATLAB 常用形态学操作函数
常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...
- 关于Properties类常用的操作
import java.io.*;import java.util.Enumeration;import java.util.Properties;/** * 关于Properties类常用的操作 * ...
- Jedis对Redis的常用命令操作
本篇主要总结一些Jedis对Redis的常用命令操作: 1.对key操作命令 2.对String操作命令 3.对List操作命令 4.对Set操作命令 5.对Hash操作命令 6.排序操作指令 一.项 ...
随机推荐
- abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十五)
core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+e ...
- Java虚拟机一看就懂01
Jvm内存结构 --- 线程隔离区域说明: 1.1.程序计数器 线程私有 是一块内存空间 唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?) 1.2.Java虚拟机栈 线程私 ...
- Liunx软件安装之JDK
在安装 jdk 之前我们需要先了解下 openjdk 跟 oracle jdk 的区别. OpenJDK 是 JDK 的开源码版本,以 GP L 协议的形式发布.在 JDK7 的时候,OpenJDK ...
- Socket I/O模型之select模型
socket网络编程中有多种常见的I/O模型: 1.blocking阻塞 2.nonblocking非阻塞 3.I/O multiplexing复用 4.signal driven 5.asynchr ...
- E-Find the median_2019牛客暑期多校训练营(第七场)
题意 N次操作,每次塞入区间\([L,R]\)的每个数,并输出此时的中位数. 题解 如果题目不是每次塞入一整个区间,而是只塞入一个数,可以简单的建权值线段树查询区间第K大,由于每次都是查询整个区间就不 ...
- HDU4578 线段树(区间更新 + 多种操作)和平方,立方
参考:https://www.cnblogs.com/H-Vking/p/4297973.html 题意: 虽然是比较裸的线段树,但是比较麻烦,并且有很多细节需要考虑,对着别人的ac代码debug了一 ...
- hdu 6092 Rikka with Subset(多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6092 #include <cstdio> #include <iostream> ...
- Codeforces Round #481 (Div. 3) B. File Name
题目地址:http://codeforces.com/contest/978/problem/B 题解:一串文件名里不能出现连续的xxx,询问进行几次操作后,文件名才不会出现xxx. 方法:只要遍历一 ...
- 如何将idea工程打包成jar文件
如何将idea工程打包成jar文件 近日在工作中遇到了一个问题,需要把本地的java文件打成jar包,传到云服务器上运行.于是学习了一下如何在intellij idea中将java工程打成jar包. ...
- Java集合中List、Set以及Map
概述: List , Set, Map都是接口:List , Set继承至Collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有 ...