`
qindongliang1922
  • 浏览: 2188571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117663
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126070
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60024
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71398
社区版块
存档分类
最新评论

如何使用Java API操作Hbase(基于0.96新的api)

阅读更多
写了个Hbase新的api的增删改查的工具类,以供参考,直接拷贝代码就能用,散仙觉得基础的功能,都有了,代码如下:
package com.dhgate.hbase.test;

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.HBaseConfiguration;
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.filter.PageFilter;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.util.Bytes;

/**
 * 基于新的API
 * Hbase0.96版本
 * 写的工具类
 * 
 * @author qindongliang
 * 大数据技术交流群: 376932160
 * 
 * **/
public class HbaseCommons {

	
	static Configuration conf=HBaseConfiguration.create();
	static String tableName="";
 
	
	
	
	public static void main(String[] args)throws Exception {
		
		//String tableName="test";
		//createTable(tableName, null);
		
	}
	
	
	/**
	 * 批量添加数据
	 * @param tableName 标名字
	 * @param rows rowkey行健的集合
	 * 本方法仅作示例,其他的内容需要看自己义务改变
	 * 
	 * **/
	public static void insertList(String tableName,String rows[])throws Exception{
		HTable table=new HTable(conf, tableName);
		List<Put> list=new ArrayList<Put>();
		for(String r:rows){
			Put p=new Put(Bytes.toBytes(r));
		   //此处示例添加其他信息
			//p.add(Bytes.toBytes("family"),Bytes.toBytes("column"), 1000, Bytes.toBytes("value"));
			list.add(p);
		}
		table.put(list);//批量添加
		table.close();//释放资源
	}
	
	/**
	 * 创建一个表
	 * @param tableName 表名字
	 * @param columnFamilys 列簇
	 * 
	 * **/
	public static void createTable(String tableName,String[] columnFamilys)throws Exception{
		//admin 对象
		HBaseAdmin admin=new HBaseAdmin(conf);
		if(admin.tableExists(tableName)){
			System.out.println("此表,已存在!");
		}else{
			//旧的写法
			//HTableDescriptor tableDesc=new HTableDescriptor(tableName);
			//新的api
			HTableDescriptor tableDesc=new HTableDescriptor(TableName.valueOf(tableName));
			
			for(String columnFamily:columnFamilys){
				tableDesc.addFamily(new HColumnDescriptor(columnFamily));
			}
			
			admin.createTable(tableDesc);
			System.out.println("建表成功!");
			
		}
		admin.close();//关闭释放资源
		
	}
	
	/**
	 * 删除一个表
	 * @param tableName 删除的表名
	 * */
	public static void deleteTable(String tableName)throws Exception{
		HBaseAdmin admin=new HBaseAdmin(conf);
		if(admin.tableExists(tableName)){
			admin.disableTable(tableName);//禁用表
			admin.deleteTable(tableName);//删除表
			System.out.println("删除表成功!");
		}else{
			System.out.println("删除的表不存在!");
		}
		admin.close();
	}
	
	/**
	 * 插入一条数据
	 * @param tableName 表明
	 * @param columnFamily 列簇
	 * @param column      列
	 * @param value       值
	 * 
	 * ***/
	public static void insertOneRow(String tableName,String rowkey,String columnFamily,String column,String value)throws Exception{
		
		HTable table=new HTable(conf, tableName);
		Put put=new Put(Bytes.toBytes(rowkey));
		put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
		table.put(put);//放入表
		table.close();//释放资源
		
	}
	
	/**
	 * 删除一条数据
	 * @param tableName 表名
	 * @param row  rowkey行键
	 * 
	 * */
	public static void deleteOneRow(String tableName,String row)throws Exception{
		
		HTable table=new HTable(conf, tableName);
		Delete delete=new Delete(Bytes.toBytes(row));
		table.delete(delete);
		table.close();
	}
	
	
	/**
	 * 删除多条数据
	 * @param tableName 表名
	 * @param rows 行健集合
	 * 
	 * **/
	public static void deleteList(String tableName,String rows[])throws Exception{
		HTable table=new HTable(conf, tableName);
		List<Delete> list=new ArrayList<Delete>();
		for(String row:rows){
			Delete del=new Delete(Bytes.toBytes(row));
			list.add(del);
		}
		table.delete(list);
		table.close();//释放资源
		
	}
	
	
	/**
	 * 获取一条数据,根据rowkey
	 * @param  tableName 表名
	 * @param  row 行健
	 * 
	 * **/
	public static void getOneRow(String tableName,String row)throws Exception{
		HTable table=new HTable(conf, tableName);
		Get get=new Get(Bytes.toBytes(row));
		Result result=table.get(get);
		printRecoder(result);//打印记录
		table.close();//释放资源
	}
	
	/**
	 * 查看某个表下的所有数据
	 * 
	 * @param tableName 表名
	 * */
	public static void showAll(String tableName)throws Exception{
		HTable table=new HTable(conf, tableName);
		Scan scan=new Scan();
		ResultScanner rs=table.getScanner(scan);
		for(Result r:rs){
			printRecoder(r);//打印记录
		}
		table.close();//释放资源
	}
	
	
	/**
	 * 查看某个表下的所有数据
	 * 
	 * @param tableName 表名
	 * @param rowKey  行健
	 * */
	public static void ScanPrefixByRowKey(String tableName,String rowKey)throws Exception{
		HTable table=new HTable(conf, tableName);
		Scan scan=new Scan();
		scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));
		ResultScanner rs=table.getScanner(scan);
		for(Result r:rs){
			printRecoder(r);//打印记录
		}
		table.close();//释放资源
	}
	
	
	/**
	 * 查看某个表下的所有数据
	 * 
	 * @param tableName 表名
	 * @param rowKey 行健扫描
	 * @param limit  限制返回数据量
	 * */
	public static void ScanPrefixByRowKeyAndLimit(String tableName,String rowKey,long limit)throws Exception{
		HTable table=new HTable(conf, tableName);
		Scan scan=new Scan();
		scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));
		scan.setFilter(new  PageFilter(limit));
		ResultScanner rs=table.getScanner(scan);
		for(Result r:rs){
			printRecoder(r);//打印记录
		}
		table.close();//释放资源
	}
	
	
	/**
	 * 根据rowkey扫描一段范围
	 * @param tableName 表名
	 * @param startRow 开始的行健
	 * @param stopRow  结束的行健
	 * **/
	public  void scanByStartAndStopRow(String tableName,String startRow,String stopRow)throws Exception{
		HTable table=new HTable(conf, tableName);
		Scan scan=new Scan();
		scan.setStartRow(Bytes.toBytes(startRow));
		scan.setStopRow(Bytes.toBytes(stopRow));
		ResultScanner rs=table.getScanner(scan);
		for(Result r:rs){
			printRecoder(r);
		}
		table.close();//释放资源
		
		
	}
	/**
	 * 扫描整个表里面具体的某个字段的值
	 * @param tableName  表名
	 * @param columnFalimy 列簇
	 * @param column 列
	 * **/
	public static  void getValueDetail(String tableName,String columnFalimy,String column)throws Exception{
	
		HTable table=new HTable(conf, tableName);
		Scan scan=new Scan();
		ResultScanner rs=table.getScanner(scan);
		for(Result r:rs){
			System.out.println("值: " +new String(r.getValue(Bytes.toBytes(columnFalimy), Bytes.toBytes(column))));
		}
		table.close();//释放资源
		
	}
	
	
	
	
	
	
	
	
	/**
	 * 打印一条记录的详情
	 * 
	 * */
	public  static void printRecoder(Result result)throws Exception{
		for(Cell cell:result.rawCells()){
			System.out.print("行健: "+new String(CellUtil.cloneRow(cell)));
			System.out.print("列簇: "+new String(CellUtil.cloneFamily(cell)));
			System.out.print(" 列: "+new String(CellUtil.cloneQualifier(cell)));
			System.out.print(" 值: "+new String(CellUtil.cloneValue(cell)));
			System.out.println("时间戳: "+cell.getTimestamp());	
		}
	}
	
	
	
}


3
0
分享到:
评论

相关推荐

    hbase 的java代码 集合 hbase 0.96

    总结来说,掌握HBase 0.96版本的Java编程涉及理解HBase的核心概念,如表、列族、行键、时间戳,以及如何通过Java API进行连接、操作数据、管理表和处理故障。同时,了解异步操作、批量操作和监听器机制也是提升HBase...

    hbase-0.96 jar包

    使用这个jar包,开发者可以构建基于HBase的应用程序,利用Java API进行数据操作。在开发过程中,需要注意的是HBase的API设计是面向列的,与传统的面向行的数据库API有所不同,需要理解如何定义表结构,如何进行增删...

    Hbase调用JavaAPI实现批量导入操作

    这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase中批量导入数据。在这个过程中,我们将探讨以下几个关键知识点: 1. **HBase架构**: HBase是基于列族的存储模型,数据被...

    使用Java API连接虚拟机HBase并进行数据库操作,Java源代码

    在本文中,我们将深入探讨如何使用Java API连接到运行在虚拟机上的HBase数据库,并进行相关的数据操作。HBase是一个分布式的、版本化的、基于列族的NoSQL数据库,它构建于Hadoop之上,适用于处理大规模的数据存储和...

    java api 访问hbase demo(Maven)

    在Java API中访问HBase是大数据处理中常见的一项任务,HBase作为一个分布式、列式存储的NoSQL数据库,常用于海量数据的实时读写。...通过这些基本操作,你将能够使用Java API高效地访问和管理HBase中的数据。

    Hadoop+HBase+Java API

    **Java API** 是Java编程语言提供的应用程序接口,允许开发者使用Java来访问和操作Hadoop和HBase的功能。对于Hadoop,Java API主要包括`org.apache.hadoop.mapreduce`包下的类,如Job、Mapper、Reducer等,用于实现...

    Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据).pdf

    在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...

    Java通过api 操作hbase 0.98

    在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据,查询一条数据,查询所有数据等操作。 具体流程如下: 1.创建项目 2.获取jar包到项目的lib目录下(这边试用的事...

    java代码使用thrift2操作hbase示例

    在本文中,我们将深入探讨如何使用Java通过Thrift2接口操作HBase数据库。HBase是一个分布式、可扩展的大数据存储系统,它构建于Hadoop之上,支持实时读写。Thrift是一个轻量级的框架,用于跨语言服务开发,允许不同...

    scala API 操作hbase表

    在本文中,我们将深入探讨如何使用Scala API操作HBase数据库。HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)...

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

    Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-...这些操作都是基于 Hbase 的 API 实现的。同时,也介绍了使用 Filter 对象进行条件查询的方法。

    HBase基本操作 Java代码

    HBase基本操作 增删改查 java代码 要使用须导入对应的jar包

    在集群中java 通过调用API操作HBase 0.98

    本篇文章将深入探讨如何在集群环境中使用Java API来操作HBase 0.98版本,主要包括创建表格、删除表格等基本操作。 首先,为了在Java中调用HBase的API,我们需要添加HBase的依赖库到项目中。对于HBase 0.98,你需要...

    javaApi_sparkhiveAPI_hbaseAPI.zip

    - **Region Server**:HBase将数据分布在多个Region Server上,Java API允许开发者管理这些服务器并执行跨服务器的操作。 - **Scan和Get操作**:通过API,可以执行扫描(Scans)来获取多行数据,或者使用Get方法...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    在Java中操作HBase,我们需要使用HBase的Java客户端API。首先,确保引入了所有必要的jar包,这些包通常包括hbase-client、hbase-common、hadoop-client等。这些依赖可以使用Maven或Gradle等构建工具管理,或者直接在...

    HBase与MapReduce处理操作(基于JavaAPI)

    该案例中主要使用MapReduce作为处理组件进行数据处理,实现的案例有如通过javaapi实现hbase数据写入hdfs、hbase表数据复制到另一个表中等操作 对应(《HBase分布式存储系统应用》胡鑫喆 张志刚著)教材中案例

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

    本教程将详细介绍如何使用Java API来创建和删除HBase表,并针对不使用Maven的初学者提供必要的jar包支持。 首先,你需要在项目中引入HBase的客户端库。由于这里没有使用Maven,你需要手动下载并添加以下jar包到项目...

    Java API读写Hbase演示项目.zip

    本项目通过实际示例,展示了如何使用 Java API 进行 HBase 的基本操作,包括创建表、插入数据、查询数据以及删除数据等。 首先,要与 HBase 进行交互,我们需要引入 HBase 客户端库。在 Maven 工程中,可以在 `pom....

Global site tag (gtag.js) - Google Analytics