文档章节

HBase学习-基本Java API

Endless2010
 Endless2010
发布于 2017/07/29 19:10
字数 603
阅读 10
收藏 1
点赞 0
评论 0

创建Connection对象

//Connection对象相当于与HBase的一个连接
public static Connection getConnection() throws IOException {
		Configuration config = HBaseConfiguration.create();
		config.addResource(new Path(System.getenv("HBASE_HOME"),"conf/hbase-site.xml"));
		return ConnectionFactory.createConnection(config);
	}

创建表

	public static void createTable(Connection connection, String tableName,
			String[] columnNames) throws IOException {
		try (Admin admin = connection.getAdmin()) {
			HTableDescriptor table = new HTableDescriptor(TableName.valueOf(tableName));
			for (String column : columnNames)
				table.addFamily(new HColumnDescriptor(column));
			admin.createTable(table);
			System.out.println("created table:"+tableName+",with columns:"+Arrays.asList(columnNames));
		}
	}

删除表

	public static void deleteTable(Connection connection, String tableName) throws IOException {
		try (Admin admin = connection.getAdmin()) {
			admin.disableTable(TableName.valueOf(tableName));
			admin.deleteTable(TableName.valueOf(tableName));
			System.out.println("deleted table:"+tableName);
		}
	}

插入put

 	public static void put(Connection connection, String tableName,String rowKey,
			String columnFamily,String column,String value) throws IOException {
		try (Table table = connection.getTable(TableName.valueOf(tableName))) {		
			Put row=new Put(rowKey.getBytes());
			row.addColumn(columnFamily.getBytes(), column.getBytes(), value.getBytes());
			table.put(row);
			System.out.println("put ["+rowKey+","+columnFamily+":"+column+"]="+value+" into table"+tableName);
		}
	}

查询get

public static Result get(Connection connection, String tableName,String rowKey,
			String columnFamily) throws IOException {
		 return get(connection, tableName, rowKey,columnFamily, null);
	}
	public static Result get(Connection connection, String tableName,String rowKey,
			String columnFamily,String column) throws IOException {
		try (Table table = connection.getTable(TableName.valueOf(tableName))) {		
			Get row=new Get(rowKey.getBytes());
			row.addFamily(columnFamily.getBytes());
			if(column!=null)
				row.addColumn(columnFamily.getBytes(), column.getBytes());
			Result result=table.get(row);
			for(Cell cell:result.listCells()){
				String col=new String(cell.getQualifier());
				String value=new String(cell.getValue());
				System.out.println("["+rowKey+","+columnFamily+":"+col+"]="+value);
			}
			return result;
		}
	}

扫描scan


public static void scan(Connection connection, String tableName,String startRow,String endRow,Filter filter) throws IOException {
		try (Table table = connection.getTable(TableName.valueOf(tableName))) {		
			Scan scan=new Scan();
			if(filter!=null)
				scan.setFilter(filter);
			if(startRow!=null)
				scan.setStartRow(startRow.getBytes());
			if(endRow!=null)
				scan.setStopRow(endRow.getBytes());
			ResultScanner scanner=table.getScanner(scan);
			for(Result result:scanner){
				String rowKey=new String(result.getRow());
				for(Cell cell:result.listCells()){
					String family=new String(cell.getFamily());
					String col=new String(cell.getQualifier());
					String value=new String(cell.getValue());
					System.out.println("["+rowKey+","+family+":"+col+"]="+value);
				}
			}
		}
	}
	public static void scan(Connection connection, String tableName) throws IOException {
		scan(connection,tableName,null,null,null);
	}
	public static void scan(Connection connection, String tableName,String startRow,String endRow) throws IOException {
		scan(connection,tableName,startRow,endRow,null);
	}
	public static void scan(Connection connection, String tableName,Filter filter) throws IOException {
		scan(connection,tableName,null,null,filter);
	}

incr


public static void incr(Connection connection, String tableName,String rowKey,
			String columnFamily,String column,long value) throws IOException {
		try (Table table = connection.getTable(TableName.valueOf(tableName))) {		
			Increment incr=new Increment(rowKey.getBytes());
			incr.addColumn(columnFamily.getBytes(), column.getBytes(), value);
			Result result=table.increment(incr);
			 for (KeyValue kv : result.raw()) {
			      System.out.println("KV: " + kv +" Value: " + Bytes.toLong(kv.getValue()));
			    }
		}
	}

测试

public static void main(String[] args) throws IOException {
		String tableName = "testTable";
		String columnFamily_info="info";
		String columnFamily_score="score";
		String column1_name="name",column1_age="age";
		String column2_Math="Math",column2_English="English";
		try(Connection conn = getConnection();){
			System.out.println("------------------- create table -------------------");
			createTable(conn,tableName,new String[]{columnFamily_info,columnFamily_score});
			
			System.out.println("------------------- put -------------------");
			put(conn,tableName,"row1",columnFamily_info,column1_name,"sam");
			put(conn,tableName,"row1",columnFamily_score,column2_Math,"70");
			put(conn,tableName,"row1",columnFamily_score,column2_English,"75");
			put(conn,tableName,"row2",columnFamily_score,column2_English,"80");
			put(conn,tableName,"row3",columnFamily_info,column1_age,"30");
			
			System.out.println("------------------- get -------------------");
			get(conn,tableName,"row1",columnFamily_score,column2_Math);
			get(conn,tableName,"row1",columnFamily_score);//get all columns in columnFamily2
			
			System.out.println("------------------- scan -------------------");
			scan(conn,tableName,"row1","row3"); //[row1,row3)
			System.out.println("------------------- scan all table -------------------");
			scan(conn,tableName); //[row1,row3)
			System.out.println("------------------- scan with filter -------------------");
			Filter filter=new ColumnPrefixFilter("Eng".getBytes());//过滤列族以Eng开头的
			scan(conn,tableName,filter); //[row1,row3)
		
			System.out.println("------------------- incr -------------------");
			incr(conn,tableName,"row3",columnFamily_score,column2_Math,80);
			incr(conn,tableName,"row3",columnFamily_score,column2_Math,-5);
			
			System.out.println("------------------- delete table -------------------");		
			deleteTable(conn,tableName);
		}

输入图片说明

© 著作权归作者所有

共有 人打赏支持
Endless2010
粉丝 1
博文 36
码字总数 23027
作品 0
南京
程序员
win环境下 hbase 数据库搭建流程

Hbase单机版安装使用教程 Hbase介绍请参考技术支持文档,这里只说明Hbase 的安装和使用 第一步:下载安装Hbase数据库 链接:链接:https://pan.baidu.com/s/1si6Nokvz8xkUsmefsRlntQ 密码:k...

lijiaweizuishuai
05/28
0
0
用 Java 对 hbase 进行CRUD增删改查操作

本文以HBase 0.90.2为例,介绍如何在Windows系统,Eclipse IDE集成环境下,使用Java语言,进行HBase客户端编程,包含建立表、删除表、插入记录、删除记录、各种方式下的查询操作等。 1. 准备...

大数据之路
2012/11/29
0
5
HBase0.96.x开发使用(一)--安装

1.1) 解压安装包 [root@hadoop234 ~]# tar -xzvf hbase-0.96.0-hadoop1-bin.tar.gz 1.2) 配置hbase-site.xml [root@hadoop234 ~]# cd hbase-0.96.0-hadoop1/conf/ [root@hadoop234 conf]# v......

whatlly
2013/12/31
0
0
bulk-load装载hdfs数据到hbase小结

bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html: hbase提供了现成...

超人学院
2015/06/01
0
0
HBase 数据导入 ImportTsv

ImportTsv 工具是通过map reduce 完成的。所以要启动yarn. 工具要使用jar包,所以注意配置classpath。ImportTsv默认是通过hbase api 插入数据的 [hadoop-user@rhel work]$ cat /home/hadoop-...

JUN_LJ
06/28
0
0
hbase单机模式的安装及启动

从apache官网上下载hbase的稳定版本:http://mirror.bit.edu.cn/apache/hbase/stable/hbase-1.1.2-bin.tar.gz 解压到本机上的任何一个目录,在我的电脑上是/home/jason/hbase:tar xvfz hbas...

z_jordon
2015/11/04
0
0
sqoop从关系型数据库导数据到hdfs和hbase上

本人最近弄了些sqoop导数据方法和命令,关于批量导入和一般导入,在本机器上linux环境运行正常; (一)Oracle导入到hdfs上 sqoop import --connect jdbc:oracle:thin:@ip:端口号:databaseNa...

可爱的ZLZLZL
2012/12/20
0
0
HBase启动时报错:/bin/java: No such file or directory6/bin/../bin/hbase: line 412: /usr/local/jdk1.8.0_152/bin/java

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 今天在启动HBase时发现如下错...

李金泽
03/11
0
0
(转载)Hbase -- HBase集群配置安装

HBase集群配置安装 hadoop-0.20.2 hbase-0.20.3 zookeeper-3.3.0 1: tar zxvf hbase-0.20.3.tar.gz 2: 修改 ./hbase-0.20.3/conf/hbase-env.sh export JAVA_HOME=/usr/local/java/ 3: 创建文......

遵从本心
2013/08/14
0
0
阿里年薪50WJAVA工程师转大数据学习路线!

大数据有两个方向,一个是偏计算机的,另一个是偏经济的。你学过Java,所以你可以偏将计算机的。 Java程序员想转大数据可行吗?Java是全世界使用人数最多的编程语言。不少程序员选择Java做为...

JAVA丶学习
04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
20分钟前
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
37分钟前
4
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
54分钟前
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0
There is no session with id[xxx]

参考网页 https://blog.csdn.net/caimengyuan/article/details/52526765 报错 2018-07-19 23:04:35,330 [http-nio-1008-exec-8] DEBUG [org.apache.shiro.web.servlet.SimpleCookie] - Found......

karma123
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部