`
bobboy007
  • 浏览: 31513 次
  • 性别: Icon_minigender_1
  • 来自: 淄博
社区版块
存档分类
最新评论

Hbase 1.1.4版本表操作例子

 
阅读更多

最近测试Hbase相关操作,发现网上例子都是到处复制,而且是旧版本的,在hbase1.x后很多函数,已经废弃或删除。下边是用新版hbase 测试的例子,供大家参考.

环境:

Hadoop2.5

hbase 1.1.4

package jyw.test;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.ArrayList; 

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;

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.Table;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.filter.Filter;  
import org.apache.hadoop.hbase.filter.RowFilter; 
import org.apache.hadoop.hbase.filter.CompareFilter;  
import org.apache.hadoop.hbase.filter.BinaryComparator;

public class HBaseTableNewFunc {
	private static Connection conn=null;
	private static Configuration conf=null;
    public static synchronized  void  getConnect() throws IOException
    {
   		  conf=HBaseConfiguration.create();  
    		  conn =ConnectionFactory.createConnection(conf);
    	 
    	// return conn;
    }
	public static  void createTable(String tableName,String famName) throws IOException
	{
	  Admin admin= conn.getAdmin();
 
	  if (admin.tableExists(TableName.valueOf(tableName))) {  
          System.out.println("table Exists!");  
         //   System.exit(0);  
      } 
      else{  
          HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName));  
          tableDesc.addFamily(new HColumnDescriptor(famName));  
          admin.createTable(tableDesc);  
          System.out.println("create table success!");  
      }  
	}
	public static void addRow(String tableName,String rowKey, String columnFamily,  Map<String,String> colmap)
			throws Exception
	{
 
		Iterator<Map.Entry<String, String>> iterator = colmap.entrySet().iterator();
		while (iterator.hasNext()) {
			Map.Entry<String, String> entry = iterator.next();
			String colname = entry.getKey();
			String colval = entry.getValue();
			addRowKeyValue(tableName,rowKey,columnFamily,colname, colval);
		}
	 
	}
	public static Map<String,String> getRow(String tableName, String rowKey) throws IOException
	{
		Map<String,String> colmap = new HashMap<String, String>();
		Table table = conn.getTable(TableName.valueOf(tableName));
		 Get g=new Get(Bytes.toBytes(rowKey));  
         Result result=table.get(g);
        
         List<Cell> cells = result.listCells();
         for (Cell c : cells){
        	   colmap.put(Bytes.toString(CellUtil.cloneQualifier(c)),Bytes.toString(CellUtil.cloneValue(c)));
         }  
         table.close();
		return colmap;
	}
	/*
	 * 获得指定字段
	 * */
	public static Map<String,String> getRow(String tableName, String rowKey,String family, List<String> fields) 
			throws IOException
	{
		Map<String,String> colmap = new HashMap<String, String>();
		Table table = conn.getTable(TableName.valueOf(tableName));
		 Get g=new Get(Bytes.toBytes(rowKey));  
         Result result=table.get(g);
        
         for(String colname :fields){
        	 colmap.put(colname,Bytes.toString(result.getValue(Bytes.toBytes(family), Bytes.toBytes(colname))));
              
        }
      table.close();
		return colmap;
	}
	/*
	 * http://blog.csdn.net/cnweike/article/details/42920547
	 * */
	public static  Map<String,Map<String,String>> getListByFilter(String tableName, String rowprefix)
			throws IOException
	{
		
		Map<String,Map<String,String>> resultmap = new HashMap<String, Map<String,String>>();
		 Scan scan1 = new Scan();
		Table table = conn.getTable(TableName.valueOf(tableName));
	
	//    Filter rowrf = new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(rowprefix)));
		PrefixFilter rowrf = new PrefixFilter(Bytes.toBytes(rowprefix));
		List<Filter> filters = new ArrayList<Filter>();  
        filters.add(rowrf);  
    	  
    	 FilterList flist = new FilterList(FilterList.Operator.MUST_PASS_ALL, filters); 
    	 
    	 scan1.  
        // setStartRow(Bytes.toBytes("row1")).  
         //setStopRow(Bytes.toBytes("row3")).  
         setFilter(flist);   
         ResultScanner scanner1 = table.getScanner(scan1);
         for(Result res : scanner1){  
        	 Map<String,String> colmap = new HashMap<String,String>();
        	 String rowkey =null;
             for(Cell cell : res.rawCells()){  
                 rowkey = Bytes.toString(CellUtil.cloneRow(cell));
            	 colmap.put(Bytes.toString(CellUtil.cloneQualifier(cell)),Bytes.toString(CellUtil.cloneValue(cell)));
             }  
             resultmap.put(rowkey, colmap);
        
         }  
           
         scanner1.close();  
         table.close();  
         return resultmap;
	}
	//scan
	//delete
	/*
	 * tablename 表名
	 * rowkey  行键
	 * columnFamily 列族名
	 * column 列名
	 * value 值
	 * */
	public static void addRowKeyValue(String tableName, String rowKey,
            String columnFamily, String column, String value) throws Exception {
		
		Table table = conn.getTable(TableName.valueOf(tableName));
		
         Put put = new Put(Bytes.toBytes(rowKey));// 指定行
        // 参数分别:列族、列、值
        put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
        table.put(put);
    }
	 public static void  main (String [] agrs) {  
		 String tablename="jyw_testnew";
		 String fam = "userinfo";
		   
		 try{
			 System.out.println(" start connect hbase");
			 getConnect();
			 System.out.println(" start create table:"+tablename);
			 createTable(tablename,fam);
			
			 System.out.println(" start insert data: rowkey=j1 uname=jiayongwei password=abcdefg");
			Map<String,String> rowmap = new HashMap<String,String>();
			rowmap.put("uname", "jiayongwei");
			rowmap.put("password", "abcdefg");
			rowmap.put("age", "19");
			addRow(tablename,"j1",fam,rowmap);
 			
			//插入数据
			System.out.println(" start insert data: rowkey=j2 uname=jiayongwei2 password=abcdefg2");
 			rowmap.clear();
 			rowmap.put("uname", "jiayongwei2");
			rowmap.put("password", "abcdefg2");
 			addRow(tablename,"j2",fam,rowmap);
 			System.out.println(" start insert data: rowkey=j22 uname=jiayongwei2 password=abcdefg2");
 			rowmap.clear();
 			rowmap.put("uname", "jiayongwei22");
			rowmap.put("password", "abcdefg22");
 			addRow(tablename,"j22",fam,rowmap);
 			
 			
 		//  按 key 获得整行数据
 			System.out.println(" get by key return one row all columns rowkey=j1");
 			Map<String,String> result=getRow(tablename,"j1");
 			System.out.println("data:"+result);
 			//按key获取指定字段
 			System.out.println(" get by key  return set columns rowkey=j1, filed: password");
 			List<String> columns = new ArrayList<String>();
 			columns.add("password");
 			Map<String,String> result1=getRow(tablename, "j1", fam, columns);
 			System.out.println(result1);
 			//过滤器
 			System.out.println("get data by row filter j2");
 			 Map<String,Map<String,String>>  mulresult= getListByFilter(tablename, "j2");
 			System.out.println("data List:"+mulresult);
		 }catch(Exception e){
			 e.printStackTrace();
		 }
	}
	
}

 内置过滤器参考博客:http://blog.csdn.net/cnweike/article/details/42920547

分享到:
评论

相关推荐

    java操作Hbase之实现表的创建删除源码

    导入这些库后,你可以开始编写Java代码来操作HBase表。以下是一些关键步骤和API的使用: 1. **连接HBase**:首先,你需要创建一个`Configuration`对象,设置HBase的ZooKeeper连接信息,然后使用`ConnectionFactory`...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】

    用户可以通过访问HBase的官方文档页面,然后使用浏览器的查找功能(例如按CTRL+F)搜索关键词“supported”,找到HBase与Hadoop的兼容版本对照表。此外,HBase官方也会提供特定版本的HBase支持的Hadoop版本,通常在...

    Hbase应用开发实验报告及代码

    (1) 列出HBase所有的表的相关信息,例如表名、创建时间等;(2) 在终端打印出指定的表的所有记录数据;(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2...

    Hbase操作示例 Hbase的读写例子

    本人原创, 1.Hbase连接需要改Hbase包中的两个配置文件,加上Hbase所在机器ip及端口 2.HBaseDMLT初始化环境 3.MapDataIni为建表 4.MapDataInsert为写数据 5.MapDataDelete为删除数据 6.MapDataRead为读数据

    HbaseTemplate 操作hbase

    3. **获取(get)操作**:获取操作用于根据行键获取HBase表中的一行数据。HbaseTemplate的`get`方法接受RowKey作为参数,返回一个Result对象,其中包含了该行的所有列族和列的信息。 4. **执行(execute)操作**:`...

    Hbase的安装过程及基本操作

    在本文中,我们将详细讲解Hbase的安装过程以及基本操作,特别针对在Linux环境下使用清华大学镜像进行下载的情况。Hbase是一个分布式的、面向列的数据库,常用于大数据存储,是Apache Hadoop生态系统的一部分。以下是...

    Hbase 的shell基本操作

    HBase是Apache的一个开源非...以上操作涵盖了HBase的基本操作命令,从创建表、管理表结构、数据的增删改查到表的管理,能够满足大多数对HBase的基本操作需求。通过这些操作,用户可以对HBase进行有效的数据管理和维护。

    实验三:熟悉常用的HBase操作

    继续深入,HBase的操作还包括创建表、插入数据、更新数据和删除数据等。在Shell中,创建表如`create 'table_name', 'column_family'`,插入数据则使用`put`命令,更新可通过`put`命令覆盖原有数据,删除数据可以是...

    Hbase 表设计与操作

    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable...

    scala API 操作hbase表

    在本文中,我们将深入探讨如何...理解HBase的表结构、行键设计、列族和时间戳等概念对于有效地使用Scala API操作HBase至关重要。同时,熟悉HBase的RegionServer和Master节点的工作原理也有助于优化你的应用程序性能。

    phoenix-hbase各个版本的下载地址

    phoenix-hbase各个版本源码的下载地址,由于phoenix对hbase的版本有要求,所以大家根据自己环境的情况下载

    新手指导hadoop、hbase、hive版本对应关系查找表

    通常,Hadoop的版本发布会包括对HBase和Hive的兼容性测试报告,但这并不意味着所有早期版本的HBase和Hive都能与新版Hadoop完全兼容。相反,有时候新版本的Hadoop可能需要与特定版本的HBase和Hive一起使用才能正常...

    hbase的shell操作

    根据提供的文件信息,本文将详细介绍HBase的Shell操作及其应用场景,包括如何创建表、插入数据、查询数据等关键操作。 ### HBase Shell简介 HBase Shell是HBase提供的一种交互式命令行工具,用于执行HBase操作。它...

    hbase不同版本jar包.rar

    本压缩包包含了HBase的两个具体版本——1.2.0和1.2.6的jar依赖包,这些都是Java开发者在使用Eclipse进行HBase开发时必不可少的库文件。 首先,我们来详细了解一下HBase的1.2.0版本。此版本发布于2016年,相较于早期...

    Java操作Hbase进行建表、删表以及对数据进行增删改查

    Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...

    Hbase 安装与基本使用

    1. **环境准备**:首先确保已安装Java Development Kit(JDK)且版本不低于1.8,因为HBase依赖于Java运行环境。 2. **下载HBase**:从Apache官网下载最新稳定版的HBase二进制包,解压到指定目录。 3. **配置环境变量...

    关于hbase表结构的知识点

    hbase表结构设计,新建表,查询表语句,删除表数据,删除表的例子。

    Hbase实验报告.pdf

    实验旨在让参与者熟练掌握HBase的Shell操作,包括创建表、输入数据以及进行特定查询。以下是详细步骤及知识点解析: ### 1. HBase Shell基础 HBase Shell是HBase提供的命令行界面,用户可以通过它来与HBase集群...

    HBase多表关联查找资料

    HBase 多表关联查找资料 本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路...

    HBase基本操作.pdf

    HBase提供了数据的批量导入操作,常见的工具有HBase自带的ImportTsv和CompleteBulkLoad工具,可以高效地将大量数据导入HBase表中。 ### 实验原理和环境 HBase是一种基于列存储的数据库,它适用于存储非结构化和半...

Global site tag (gtag.js) - Google Analytics