文档章节

HBase学习-基本Java API

Endless2010
 Endless2010
发布于 2017/07/29 19:10
字数 603
阅读 10
收藏 1

创建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
南京
程序员
私信 提问
hadoop hive hbase 入门学习 (二)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// hadoop 自学系列 hado......

curiousby
2015/03/08
0
0
hbase无法启动

输入bin/start-hbase.sh后出现如下错误: /home/ted1orelee0308/hbase-1.2.6/bin/hbase: line 412: /usr/lib/jvm/java1.8.0_121/bin/java: No such file or directory /home/ted1orelee0308/......

hbbb
2017/09/27
110
1
win环境下 hbase 数据库搭建流程

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

lijiaweizuishuai
2018/05/28
0
0
学习Hadoop资料分享

最近一直在学习Hadoop,没办法,工作需要,最近在网上收集资料时,看到了一个课程,叫Cloudera Hadoop 4系列实战课程(电商业日志流量分析项目),把课程内容的大概给大家看一下,有40课时,看...

adiykk
2013/06/19
929
5
用 Java 对 hbase 进行CRUD增删改查操作

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

大数据之路
2012/11/29
0
5

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部