常用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.排序操作指令 一.项 ...
随机推荐
- Cassandra查询操作趟坑记录
例子表 CREATE TABLE employee ( name TEXT, age SMALLINT, phone TEXT, bornDate DATE, createDate timestamp ...
- Codeforces 1004D
题意略. 思路: 有两个点要注意一下: 1.这个菱形矩阵是8对称的,也即可以是沿45°对角线对称. 2.菱形矩阵上的数字表明了这个点到中心0点的距离,这对于确定位置有帮助. 这个题目简直刷新人生观,这 ...
- CodeForces 909C
题意略. 思路: 开始的时候,定义dp[i]:当前行在第i行,i~n有多少种排列方式,如果i为f,那么dp[i] = dp[i + 1],因为第i + 1条语句只能放在f后且向右缩进一位: 如果i为s ...
- Java 复制PPT幻灯片
本篇文章将介绍通过java程序原样复制PPT幻灯片的方法.这里分两种情况来复制,即 在同一幻灯片文档中复制 在不同幻灯片文档间复制 使用工具:Free Spire.Presentation for J ...
- 基于ASP.Net Core开发的一套通用后台框架
基于ASP.Net Core开发一套通用后台框架 写在前面 这是本人在学习的过程中搭建学习的框架,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 知其然,知其所以然,并非重 ...
- 牛客 136J-洋灰三角 +高中数学博大精深
参考学习:http://www.cnblogs.com/l609929321/p/9500814.html 牛客 136J-洋灰三角 题意: 在一个1 * n的棋盘中,第一格放1,之后的每一个放前一个 ...
- 牛客-2018多校算法第五场C-KMP
字符串的问题 在原来的字符串中前缀与后缀相同,且原来的中间还含有这个子串: 这里加的num[]数组真是太厉害了,可以直接用来判断中间是否有子串: #include <iostream> # ...
- POJ-2253-Frogger +最短路小变形
传送门:http://poj.org/problem?id=2253 参考:https://www.cnblogs.com/lienus/p/4273159.html 题意:给出一个无向图,求一条从 ...
- HDU 6394 Tree 分块 || lct
Tree 题意: 给你一颗树, 每一个节点都有一个权值, 如果一个石头落在某个节点上, 他就会往上跳这个的点的权值步. 现在有2种操作, 1 把一个石头放在 x 的位置 询问有跳几次才跳出这棵树, 2 ...
- POJ 1077 Eight (BFS+康托展开)详解
本题知识点和基本代码来自<算法竞赛 入门到进阶>(作者:罗勇军 郭卫斌) 如有问题欢迎巨巨们提出 题意:八数码问题是在一个3*3的棋盘上放置编号为1~8的方块,其中有一块为控制,与空格相邻 ...