`

java操作hbase

阅读更多

HBase提供了Java API对其进行管理,包括对表的管理、数据的操作等。 HBaseAdmin —— 对表的创建、删除、显示以及修改等。 HTable —— 通过HTable的实例来访问表并进行数据的操作。

package test;


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

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
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.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;

public class OperateTable {
	
	public static Configuration conf;
	
	static{
		conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum","master");
		conf.set("hbase.zookeeper.property.clientPort","2181");
	}
	
	public static void main(String[] args) throws Exception {
		
//		createTable("hanyiting");
//		insertData("hanyiting");
//		queryAll("hanyiting");
//		queryByCondition("hanyiting");
//		listAllTables();
		listTableFamily("test");
		
	}
	
	public static void createTable(String tableName){
		System.out.println("start create table ......");
		try {
			HBaseAdmin admin = new HBaseAdmin(conf);
			if(admin.tableExists(tableName)){
				admin.disableTable(tableName);
				admin.deleteTable(tableName);
				System.out.println(tableName + " is exist,delete ......");
			}
			
			HTableDescriptor desc = new HTableDescriptor(tableName);
			desc.addFamily(new HColumnDescriptor("column1"));
			desc.addFamily(new HColumnDescriptor("column2"));
			desc.addFamily(new HColumnDescriptor("column3"));
			admin.createTable(desc);
			admin.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("end create table ......");
	}
	
	public static void insertData(String tableName){
		System.out.println("start insert data ......");
		HTable table;
		try {
			table = new HTable(conf,tableName);
			Put put = new Put("112233bbcc".getBytes());
			put.add("column1".getBytes(),null,"aaa".getBytes());
			put.add("column2".getBytes(),null,"bbb".getBytes());
			put.add("column3".getBytes(),null,"ccc".getBytes());
		
			table.put(put);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	public static void dropTable(String tableName){
		
		HBaseAdmin admin;
		try {
			admin = new HBaseAdmin(conf);
			admin.disableTable(tableName);
			admin.deleteTable(tableName);
		} catch (MasterNotRunningException e) {
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void deleteRow(String tableName,String rowkey){
		try{
			HTable table = new HTable(conf, tableName);
			List list = new ArrayList();
			Delete d1 = new Delete(rowkey.getBytes());
			list.add(d1);
			
			table.delete(list);
			System.out.println("删除行成功!");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static void queryAll(String tableName){
		
		try {
			HTable table = new HTable(conf, tableName);
			ResultScanner rs = table.getScanner(new Scan());
			for(Result r : rs){
				System.out.println("获得到rowkey:"+new String(r.getRow()));
				for(KeyValue keyvalue : r.raw()){
					System.out.println("列族:"+new String(keyvalue.getFamily())+"列:"+new String(keyvalue.getKey()
							+ "====值:"+new String(keyvalue.getValue())));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void queryByCondition(String tableName){
		try{
			
			HTable table = new HTable(conf, tableName);
			
			List<Filter> filters = new ArrayList<Filter>();
			Filter filter = new SingleColumnValueFilter(Bytes.toBytes("column1"), null, CompareOp.EQUAL, Bytes.toBytes("aaa"));
			filters.add(filter);
			
			FilterList filterList = new FilterList(filters);
			Scan scan = new Scan();
			scan.setFilter(filterList);
			ResultScanner rs = table.getScanner(scan);
			
			for(Result r : rs){
				System.out.println("获得到rowkey:"+new String(r.getRow()));
				for(KeyValue keyvalue : r.raw()){
					System.out.println("列族:"+new String(keyvalue.getFamily())+"列:"+new String(keyvalue.getKey()
							+ "====值:"+new String(keyvalue.getValue())));
				}
			}
			rs.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static void listAllTables(){
		HBaseAdmin admin;
		try {
			admin = new HBaseAdmin(conf);
			TableName[] listTableNames = admin.listTableNames();  //表名
			System.out.println(listTableNames.toString());
			HTableDescriptor[] listTables = admin.listTables();  //整个表的结构
			System.out.println(listTables.toString());
		} catch (MasterNotRunningException e) {
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void listTableFamily(String tableName){
		try {
			HTable table = new HTable(conf, tableName);
			HTableDescriptor tableDescriptor = table.getTableDescriptor();
			Collection<HColumnDescriptor> families = tableDescriptor.getFamilies();
			for(HColumnDescriptor cdesc : families){
				System.out.println(cdesc.getNameAsString());
			}
			System.out.println(tableDescriptor);
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

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

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

    java操作Hbase之比较过滤器RowFilter的使用源码

    总结起来,Java操作HBase时,RowFilter是强大的数据筛选工具,它允许我们根据行键进行精确或范围匹配。正确理解和使用RowFilter,能够有效地优化HBase的数据读取,提高系统性能。在实际开发中,结合所提供的jar包,...

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

    在Java编程环境中,操作HBase并将其数据写入HDFS(Hadoop Distributed File System)是一项常见的任务,特别是在大数据处理和分析的场景下。本篇将详细介绍如何使用Java API实现这一功能,以及涉及到的关键技术和...

    HBase基本操作 Java代码

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

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

    在Java中操作HBase是一种常见的任务,特别是在大数据处理和存储的场景中。HBase是一个分布式的、基于列族的NoSQL数据库,它构建在Hadoop之上,提供了高性能、低延迟的数据存储和访问能力。本教程将详细介绍如何使用...

    java操作Hbase之Hbase专用过滤器PageFilter的使用源代码

    在Java中操作HBase数据库时,我们经常需要对大量数据进行高效的检索和处理。HBase提供了多种过滤器机制,其中PageFilter是一种非常实用的工具,它可以帮助我们在查询时限制返回的结果数量,从而优化性能和内存使用。...

    java链接及操作hbase实例代码

    这个名为“Hbasetest”的压缩包文件很可能包含了上述操作的完整示例代码,你可以通过查看和运行代码来加深对Java操作HBase的理解。务必注意,根据你的HBase集群配置,可能需要调整代码中的连接参数,以确保正确连接...

    java-hbase开发包

    4. **批处理操作**:为了提高性能,Java-HBase支持批量写入和读取操作。`Put`对象可以收集多行的写操作,而`Get`和`Scan`则能一次性获取多行或多列的数据。 5. **过滤器和比较器**:通过使用`Filter`接口,开发者...

    使用Java对Hbase操作总结及示例代码

    "Java操作HBase总结及示例代码" 使用Java对HBase进行操作是大数据处理中常见的场景,本文将总结使用Java对HBase进行操作的方法,并提供详细的示例代码。 一、Configuration 在使用Java API时,Client端需要知道...

    java访问hbase所需的jar包

    为了在Java环境中顺利地操作HBase,开发者需要引入一系列的依赖库,这些库包含了与HBase通信所需的各种类和方法。 首先,`hbase-client.jar`是核心客户端库,包含了与HBase服务器通信的所有必要组件。这个包提供了...

    java代码使用thrift2操作hbase示例

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

    java链接hbase数据示例代码

    本示例代码主要展示了如何使用Java API连接HBase数据库,并执行基本的CRUD(创建、读取、更新、删除)操作,同时也包括了批量操作的支持。下面我们将详细探讨这些知识点。 首先,连接HBase需要引入HBase的客户端库...

    hbase jar包.zip

    "hbase jar包.zip" 提供了整合Spring与HBase所需的关键库文件,使得开发者能够高效地利用Spring进行HBase的操作。接下来,我们将深入探讨这些库文件的作用和功能,以及它们如何支持Spring集成HBase。 首先,hbase-...

    java连接hbase的jar包

    Java连接HBase主要依赖于Apache HBase提供的Java客户端库,这个库包含了所有必要的类和接口,使得Java应用程序能够与HBase进行交互。HBase是一个分布式、版本化的NoSQL数据库,基于Google的Bigtable设计,运行在...

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

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

    java访问Hbase数据库Demo

    Java访问Hbase数据库是大数据处理中的常见操作,尤其在分布式存储和实时数据分析场景下。HBase,一个基于Google Bigtable模型的开源非关系型数据库,是Apache Hadoop生态系统的一部分,提供高并发、低延迟的数据存储...

    HbaseTemplate 操作hbase

    总之,Spring Data Hadoop的HbaseTemplate为Java开发者提供了一种简洁且强大的方式来操作HBase,通过其丰富的API可以轻松实现各种HBase操作。在实际项目中,结合Spring的依赖注入和配置管理,能够有效地提升代码的可...

    Hbase JAVA编程开发实验

    Hbase JAVA编程开发实验报告以及代码,1 按照“Hbase应用开发实验1.pdf”中给出的说明,完成相关相关实验及JAVA程序的编写、调试和运行,提交JAVA源程序(AccessObject.java, HBaseTester.java, User.java)及运行...

    Java代码通过API操作HBase的最佳实践.pdf

    总之,Java操作HBase的最佳实践包括: 1. 使用`HTablePool`管理`HTable`实例,以提高性能和减少资源消耗。 2. 在服务初始化时预获取并关闭`HTable`,确保后续操作的高效性。 3. 使用`Scan`对象进行精细化的查询控制...

Global site tag (gtag.js) - Google Analytics