我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HBase基础操作,包括表的增删改查过滤等

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HBase基础操作,包括表的增删改查过滤等

package com.snglw.basic;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.coprocessor.AggregationClient;
import org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;

import com.snglw.util.ConnectInit;

public class BasicOperator {

	ConnectInit ci = new ConnectInit();
	Configuration conf = ci.getConfiguration();
	
	
	
	public void createTable(){

		String tableName = "user";
		HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
		HColumnDescriptor hcd = new HColumnDescriptor("info");
		htd.addFamily(hcd);
		
		HBaseAdmin admin = null;
		try
        {
            admin = new HBaseAdmin(conf);
            if (admin.tableExists(tableName)){
                admin.disableTable(tableName);
                admin.deleteTable(tableName);
            }else{
            	admin.createTable(htd);
            	System.out.println("Table Created!");
            }
		}catch(IOException e){
			e.printStackTrace();
		}
		finally{
			if(admin != null){
				try{
					admin.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void modifyTable(){
		//指定表名
		String tableName = "user";
		//指定列族名
		byte[] familyName = Bytes.toBytes("education");
		
		HBaseAdmin admin = null;
		try{
			//实例化HBaseAdmin对象
			admin = new HBaseAdmin(conf);
			//获取表描述信息对象
			HTableDescriptor htd = admin.getTableDescriptor(Bytes.toBytes(tableName));
			//修改前,判断表是否有指定列族
			if(!htd.hasFamily(familyName)){
				//创建列描述信息
				HColumnDescriptor hcd = new HColumnDescriptor(familyName);
				htd.addFamily(hcd);
				
				//修改表前,需要disable表,使其下线
				admin.disableTable(tableName);
				//提交modifyTable请求
				admin.modifyTable(tableName, htd);
				//修改完成之后,使表上线
				admin.enableTable(tableName);
			}
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(admin != null){
				try {
					admin.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void put(){
		//指定表名
		String tableName = "user";
		//指定列族名
		byte[] familyName = Bytes.toBytes("info");
		//指定列名
		byte[][] qualifiers = {Bytes.toBytes("name"),Bytes.toBytes("gender"),
							   Bytes.toBytes("age"),Bytes.toBytes("address")};
		HTable table = null;
		try{
			//实例化一个HTable对象
			table = new HTable(conf,tableName);
			List<Put> puts = new ArrayList<Put>();
			//实例化一个Put对象
			Put put = new Put(Bytes.toBytes("012005000201"));
			put.addImmutable(familyName, qualifiers[0],Bytes.toBytes("张三"));
			put.addImmutable(familyName, qualifiers[1],Bytes.toBytes("男"));
			put.addImmutable(familyName, qualifiers[2],Bytes.toBytes(new Long(19)));
			put.addImmutable(familyName, qualifiers[3],Bytes.toBytes("广东省深圳市"));
			puts.add(put);
			
			put = new Put(Bytes.toBytes("012005000202"));
			put.addImmutable(familyName, qualifiers[0],Bytes.toBytes("李"));
			put.addImmutable(familyName, qualifiers[1],Bytes.toBytes("女"));
			put.addImmutable(familyName, qualifiers[2],Bytes.toBytes(new Long(23)));
			put.addImmutable(familyName, qualifiers[3],Bytes.toBytes("山西省大同市"));
			puts.add(put);
			
			put = new Put(Bytes.toBytes("012005000203"));
			put.addImmutable(familyName, qualifiers[0],Bytes.toBytes("王"));
			put.addImmutable(familyName, qualifiers[1],Bytes.toBytes("男"));
			put.addImmutable(familyName, qualifiers[2],Bytes.toBytes(new Long(26)));
			put.addImmutable(familyName, qualifiers[3],Bytes.toBytes("浙江省宁波市"));
			puts.add(put);
			
			//提交put数据请求
			table.put(puts);
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(table != null){
				try{
					//关闭HTable对象
					table.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void delete(){
		String tableName = "user";
		//指定rowKey值,即编号为012005000201
		byte[] rowKey = Bytes.toBytes("012005000201");
		
		HTable table = null;
		try{
			table = new HTable(conf,tableName);
			Delete delete = new Delete(rowKey);
			//提交一次delete数据请求
			table.delete(delete);
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(table != null){
				try {
					table.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void get(){
		String tableName = "user";
		//指定列族名
		byte[] familyName = Bytes.toBytes("info");
		//指定列名
		byte[][] qualifier = {Bytes.toBytes("name"),Bytes.toBytes("address")};
		//指定rowKey值
		byte[] rowKey = Bytes.toBytes("012005000202");
		
		HTable table = null;
		try{
			table = new HTable(conf,tableName);
			//实例化get对象
			Get get = new Get(rowKey);
			//设置列族和列名
			get.addColumn(familyName,qualifier[0]);
			get.addColumn(familyName,qualifier[1]);
			//提交请求
			Result result = table.get(get);
			for(Cell cell:result.rawCells()){
				System.out.println(Bytes.toString(CellUtil.cloneRow(cell))
						+ ":" + Bytes.toString(CellUtil.cloneFamily(cell))
						+ ":" + Bytes.toString(CellUtil.cloneQualifier(cell))
						+ ":" + Bytes.toString(CellUtil.cloneValue(cell)));
			}
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(table != null){
				try {
					table.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void scan(){
		String tableName = "webPage";
		HTable table = null;
		try{
			table = new HTable(conf,tableName);
			Scan scan = new Scan();
			scan.addColumn(Bytes.toBytes("webPageInfo"),Bytes.toBytes("doc"));
			//设置缓存大小
			scan.setCaching(5000);
			scan.setBatch(2);
			//实例化一个ResultScanner对象
			ResultScanner rScanner = null;
			//提交请求
			rScanner = table.getScanner(scan);
			for(Result r = rScanner.next();r != null;r = rScanner.next()){
				for(Cell cell:r.rawCells()){
					System.out.println(Bytes.toString(CellUtil.cloneRow(cell))
							+ ":" + Bytes.toString(CellUtil.cloneFamily(cell))
							+ ":" + Bytes.toString(CellUtil.cloneQualifier(cell))
							+ ":" + Bytes.toString(CellUtil.cloneValue(cell)));
				}
			}
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(table != null){
				try {
					table.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void singleColumnValueFilter(){
		String tableName = "user";
		HTable table = null;
		try{
			table = new HTable(conf,tableName);
			//实例化一个Scan对象
			Scan scan = new Scan();
			scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"));
			//设置过滤条件
			SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("info"),Bytes.toBytes("name"),
								CompareOp.EQUAL,Bytes.toBytes("王"));
			scan.setFilter(filter);
			//实例化ResultScanner对象
			ResultScanner rScanner = null;
			rScanner = table.getScanner(scan);
			for(Result r = rScanner.next();r != null;r = rScanner.next()){
				for(Cell cell:r.rawCells()){
					System.out.println(Bytes.toString(CellUtil.cloneRow(cell))
							+ ":" + Bytes.toString(CellUtil.cloneFamily(cell))
							+ ":" + Bytes.toString(CellUtil.cloneQualifier(cell))
							+ ":" + Bytes.toString(CellUtil.cloneValue(cell)));
				}
			}
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(table != null){
				try {
					table.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void filterList(){
		String tableName = "user";
		HTable table = null;
		try{
			table = new HTable(conf,tableName);
			//实例化一个Scan对象
			Scan scan = new Scan();
			scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"));
			//实例化FilterList对象,里各个filter的是"and"关系
			FilterList list = new FilterList(Operator.MUST_PASS_ALL);
			//设置过滤条件(age>20的数据)
			list.addFilter(new SingleColumnValueFilter(Bytes.toBytes("info"),Bytes.toBytes("age"),
								CompareOp.GREATER_OR_EQUAL,Bytes.toBytes(new Long(20))));
			//获取age<=29的数据
			list.addFilter(new SingleColumnValueFilter(Bytes.toBytes("info"),Bytes.toBytes("age"),
					CompareOp.GREATER_OR_EQUAL,Bytes.toBytes(new Long(29))));
			scan.setFilter(list);
			//实例化ResultScanner对象
			ResultScanner rScanner = null;
			rScanner = table.getScanner(scan);
			for(Result r = rScanner.next();r != null;r = rScanner.next()){
				for(Cell cell:r.rawCells()){
					System.out.println(Bytes.toString(CellUtil.cloneRow(cell))
							+ ":" + Bytes.toString(CellUtil.cloneFamily(cell))
							+ ":" + Bytes.toString(CellUtil.cloneQualifier(cell))
							+ ":" + Bytes.toString(CellUtil.cloneValue(cell)));
				}
			}
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(table != null){
				try {
					table.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	
	
	public void aggregate(){
		//指定表名
		byte[] tableName = Bytes.toBytes("user");
		//指定列族名
		byte[] family = Bytes.toBytes("info");
		
		AggregationClient aggregationClient = new AggregationClient(conf);
		//实例化scan对象
		Scan scan = new Scan();
		scan.addFamily(family);
		scan.addColumn(family,Bytes.toBytes("age"));
		try{
			//获取行数
			long rowCount = aggregationClient.rowCount(TableName.valueOf(tableName),null,scan);
			System.out.println("row count is "+rowCount);
			//获取最大值
			long max = aggregationClient.max(TableName.valueOf(tableName),new LongColumnInterpreter(),scan);
			System.out.println("max number is "+max);
			//获取最小值
			long min = aggregationClient.min(TableName.valueOf(tableName),new LongColumnInterpreter(),scan);
			System.out.println("min number is "+min);
		}catch(Throwable e){
			e.printStackTrace();
		}
	}
	
	
	public static void main(String[] args){
		BasicOperator bo = new BasicOperator();
		bo.aggregate();
	}
}


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HBase基础操作,包括表的增删改查过滤等

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库表的基础操作(增删改查)---讲解一

MySQL数据库表的基础操作(增删改查)---讲解一MySQL数据库表的模糊/多行/分组/排序/分页查询以及字mysql数据类型的讲解---讲解二MySQL字段约束及多表查询---讲解三1.数据库概述1.1 什么是数据库数据库:存储和管理数据的仓库数据库是一个
MySQL数据库表的基础操作(增删改查)---讲解一
2020-01-23

【MySQL系列】表内容的基本操作(增删查改)

「前言」文章内容大致是对MySQL表内容的基本操作,即增删查改。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表内容的增删查改1.1 Create1.1.1 单行数据+全
2023-08-20

C语言中单链表的基本操作(创建、销毁、增删查改等)

这篇文章主要介绍了C语言中单链表的基本操作(创建、销毁、增删查改等),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-05

如何实现java链表中的基本操作(增、删、查、改)

链表也是一个线性的数据结构,与数组不同的是,链表在内存中的存储方式是随机存储。下面给出涵盖链表四个操作的一个完整的例子,有几点需要注意的是:(一)在增删改查之前,都需要对给出的下标进行边界判断;(二)增加一个名为last的节点,可以方便在链表的尾部进行操作,省
如何实现java链表中的基本操作(增、删、查、改)
2020-02-26

【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论
【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)
2023-12-23

编程热搜

目录