`
superlxw1234
  • 浏览: 551492 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44453
社区版块
存档分类
最新评论

java对hbase的基本操作

阅读更多
package com.sdo.sjzx.jptj;

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

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.ZooKeeperConnectionException;
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.util.Bytes;

public class Test {
	private static Configuration conf = null;
	static {
		conf = HBaseConfiguration.create();
		conf.set(
				"hbase.zookeeper.quorum",
				"zk1,zk2,zk3");
	}

	//参数:表名,列名(可以有多个)
	public void createTable(String tablename, String[] cfs) throws IOException {
		HBaseAdmin admin = new HBaseAdmin(conf);
		if (admin.tableExists(tablename)) {
			System.out.println("table already exists!");
		} else {
			HTableDescriptor tableDesc = new HTableDescriptor(tablename);
			for (int i = 0; i < cfs.length; i++) {
				tableDesc.addFamily(new HColumnDescriptor(cfs[i]));
			}
			admin.createTable(tableDesc);
			System.out.println("table create OK!");
		}
	}
	
	//删除表,先disable,再delete
	public void deleteTable(String tablename) throws IOException {
		try {
			HBaseAdmin admin = new HBaseAdmin(conf);
			admin.disableTable(tablename);
			admin.deleteTable(tablename);
			System.out.println("delete ok");
		} catch (MasterNotRunningException e) {
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			e.printStackTrace();
		}
	}
	
	//insert记录,
	public void writeRow(String tablename,String rowKey,Map<String,Map<String,String>> m) {
		try {
			HTable table = new HTable(conf, tablename);
			Put put = new Put(Bytes.toBytes(rowKey));//"001"
			Set<String> key = m.keySet();
			for(Iterator<String> it = key.iterator();it.hasNext();){
				String k = it.next();
				Map<String,String> tmpM = m.get(k);
				Set<String> keyInner = tmpM.keySet();
				for(Iterator<String> itInner = keyInner.iterator();itInner.hasNext();) {
					String kInner = itInner.next();
					String vInner = tmpM.get(kInner);
					put.add(Bytes.toBytes(k), Bytes.toBytes(kInner), Bytes.toBytes(vInner));
					table.put(put);
				}
				
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void deleteRow(String tablename, String rowkey) throws IOException {
		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("");
	}

	public static void selectRow(String tablename, String rowKey)
			throws IOException {
		HTable table = new HTable(conf, tablename);
		Get g = new Get(rowKey.getBytes());
		Result rs = table.get(g);
		for (KeyValue kv : rs.raw()) {
			System.out.print(new String(kv.getRow()) + "  ");
			System.out.print(new String(kv.getFamily()) + ":");
			System.out.print(new String(kv.getQualifier()) + "  ");
			System.out.print(kv.getTimestamp() + "  ");
			System.out.println(new String(kv.getValue()));
		}
	}

	public void scaner(String tablename) {
		try {
			HTable table = new HTable(conf, tablename);
			Scan s = new Scan();
			ResultScanner rs = table.getScanner(s);
			for (Result r : rs) {
				KeyValue[] kv = r.raw();
				for (int i = 0; i < kv.length; i++) {
					System.out.print(new String(kv[i].getRow()) + "  ");
					System.out.print(new String(kv[i].getFamily()) + ":");
					System.out.print(new String(kv[i].getQualifier()) + "  ");
					System.out.print(kv[i].getTimestamp() + "  ");
					System.out.println(new String(kv[i].getValue()));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] agrs) {
		try {
			String tablename = "lxwtest";
			Test t = new Test();
			t.deleteTable(tablename);
			
			//创建一张列为userinfo和userdeptinfo的表
			String[] s = new String[2];
			s[0] = "userinfo";
			s[1] = "userdeptinfo";
			t.createTable(tablename,s);
			
			
			String userId = "003";
			String userName = "wangwu";
			int age = 25;
			String dept = "data analysis";
			
			//向userinfo中写入name=?和age=?
			//向userdeptinfo中写入dept=?
			//这里将源数据构建合适的数据结构,比如Map<String,Map<String,String>>
			//来完成insert
			
			Map<String,Map<String,String>> m = new HashMap<String,Map<String,String>>();
			Map<String,String> kvUserInfo = new HashMap<String,String>();
			kvUserInfo.put("name", userName);
			kvUserInfo.put("age",age+"");
			m.put("userinfo", kvUserInfo);
			
			Map<String,String> kvUserDeptInfo = new HashMap<String,String>();
			kvUserDeptInfo.put("deptname", dept);
			m.put("userdeptinfo", kvUserDeptInfo);
			
			t.writeRow(tablename,userId,m);
			t.scaner(tablename);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

scan出来的结果:

hbase(main):028:0> scan 'lxwtest'
ROW                                  COLUMN+CELL                                                                                             
 001                                 column=userdeptinfo:deptname, timestamp=1340092898883, value=data platform                              
 001                                 column=userinfo:age, timestamp=1340092898883, value=27                                                  
 001                                 column=userinfo:name, timestamp=1340092898883, value=zhangsan                                           
 002                                 column=userdeptinfo:deptname, timestamp=1340092951198, value=data platform                              
 002                                 column=userinfo:age, timestamp=1340092951198, value=25                                                  
 002                                 column=userinfo:name, timestamp=1340092951198, value=lisi                                               
 003                                 column=userdeptinfo:deptname, timestamp=1340093006923, value=data analysis                              
 003                                 column=userinfo:age, timestamp=1340093006923, value=25                                                  
 003                                 column=userinfo:name, timestamp=1340093006923, value=wangwu  
 

 

 

分享到:
评论

相关推荐

    HBase基本操作 Java代码

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

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

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

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

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

    java链接hbase数据示例代码

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

    java连接hbase的jar包

    以上就是使用Java连接HBase的基本知识,实际应用中可能还需要处理并发控制、错误处理、性能优化等问题。理解HBase的数据模型(行、列族、列限定符和时间戳)以及HBase的API用法,对于高效地使用HBase至关重要。同时...

    Hbase JAVA编程开发实验

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

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

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

    java访问Hbase数据库Demo

    本示例将通过Java API详细介绍如何进行Hbase的基本操作,包括增、删、改、查以及创建表。 首先,我们需要在Java项目中引入Hbase的相关依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;...

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

    创建表操作是使用Java对HBase进行操作的基本步骤。下面是一个创建表的示例代码: public class HBaseClient { public void createTable() throws IOException { // 1. 创建配置 Configuration conf = ...

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

    在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。...理解这些基本操作对于高效地使用HBase至关重要,特别是在大数据处理和分析的场景下。

    java访问hbase所需的jar包

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

    hbase java api 访问 查询、分页

    总之,HBase的Java API提供了丰富的功能,使得开发人员能够灵活地对HBase进行操作。理解并熟练掌握这些API,对于开发高效、稳定的数据处理系统至关重要。在具体实践中,应根据业务需求选择合适的查询策略,以充分...

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

    在Java中操作HBase,过滤数据是至关重要的任务,特别是在处理大数据时,高效地筛选出所需信息能够极大地提升性能。本文将深入探讨HBase的比较过滤器RowFilter的使用源码,帮助你理解如何在实际项目中应用这一关键...

    Hbase的安装过程及基本操作

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

    Hbase 基本操作类

    Hbase 基本操作类 static { //此处可以使用hbase的配置文件,也可以通过代码来实例化hbase连接 /* * Configuration HBASE_CONFIG = new Configuration(); * HBASE_CONFIG.set("hbase.zookeeper.quorum", ...

    java 连接远程hbase 数据库

    Java连接远程HBase数据库是一项常见的任务,特别是在大数据处理和分布式存储的应用场景中。HBase是一个构建在Hadoop文件系统(HDFS)...通过理解并应用这些知识,你可以有效地在Java应用程序中集成和操作HBase数据库。

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

    实验的目标是让你理解HBase在Hadoop架构中的地位,以及掌握通过Shell命令和Java API进行基本操作的方法。 首先,让我们来看看实验的平台配置。实验要求的操作系统是Linux,这通常是大数据处理的首选平台,因为它...

    Hbase 安装与基本使用

    **四、HBase基本操作** 1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '...

    java api 访问hbase demo(Maven)

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

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

    在Java中操作HBase,尤其是基于0.96版本的...以上就是使用Java API操作HBase的基本步骤。理解这些概念和方法对于有效管理和处理HBase中的数据至关重要。实际应用中,还需要考虑性能优化、并发控制以及错误处理等细节。

Global site tag (gtag.js) - Google Analytics