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

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包

    Hbase JAVA编程开发实验

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

    Hbase 基本操作类

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

    Hadoop原理与技术Hbase的基本操作

    上机实操,熟悉指令操作Hbase和java代码操作Hbase 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 1:指令操作Hbase (1):start-all.sh,启动所有进程 (2):start-hbase.sh...

    HBase基本操作(实验)2018年7月31日-(肖光鼎)

    HBase基本操作(实验)2018年7月31日-(肖光鼎)

    HBaseJavaExample:使用Java在HBase中进行基本操作的示例

    该示例代码会将每日的股价数据从Google财经导入到HBase中,并对它运行简单的查询。 该示例是使用HBase 1.0.1.1或兼容版本,Java 8 JDK更新60和Fedora 22 Linux(4.1.6-200.fc22.x86_64)开发的。安装HBase 可以从...

    Hbase+Spring boot实战分布式文件存储

    并对HBase进行实战操作,讲解基本的shell命令及java api。重点讲解如何通过过滤器筛选数据... 3-1 HBase写流程 3-2 HBase读流程 3-3 HBase模块协作 3-4 HBase实战:Shell命令实战 3-5 HBase实 战:Java Api实现HBase...

    HBaseRegion自动切分的所有细节都在这里了

    本文来自于36大数据,这篇文章将会对这些细节进行基本的说明,一方面可以让大家对HBase中Region自动切分有更加深入的理解,另一方面如果想实现类似的功能也可以参考HBase的实现方案。Region自动切分是HBase能够拥有...

    hbase-operator-tools:Apache HBase操作员工具

    hbase-operator-tools 操作员工具的主机,包括: ,hbase-2.x修复工具,是hbase-1的hbck (AKA hbck1 )的后继者。 ,一种用于生成有关Table列数和行大小的基本报告的工具; 在没有可用的分布式执行时使用。

    HBase Data Browser:HBase数据库的简单GUI界面-开源

    HBase Manager提供了一个... 使用HBM,我们可以执行所有基本操作,例如表创建/更改/删除/截断和数据修改,例如插入/删除/更新。 可以使用过滤器和自定义扫描范围完全自定义扫描操作。 *当前版本支持Java 8的HBase 1.2

    java 大数据 spark flink redis hive hbase kafka 面试题 数据结构 算法 设计模式.zip

    基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,...

    实验二:熟悉常用的HDFS操作

    A.2实验二:熟悉常用的HDFS操作 ...(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2) Hadoop版本:2.7.1。 (3)JDK版本:1.7或以上版本。(4) Java IDE:Eclipse。

    word源码java-hadoop_example:Hadoop基本操作,包括pagerank、kmeans、join、max_tempera

    Hadoop基本操作和实例,具体如下。 注: 每个示例的文件夹中都有代码对应的文档说明。 custom_datatype 此文件夹下主要包含2个java文件,TextPair.java和TextPair2.java,都是自定义的数据类型。 TextPair.java重写...

    传智7天Hadoop培训视频

    课程安排: 01) Linux基础操作;02) 搭建伪分布实验环境;...08) 介绍HBase体系结构及基本操作;09) 介绍pig操作;10) 介绍Hive体系结构及基本操作;11) 介绍Sqoop操作;12) Flume操作;13) 论坛日志分析项目。

    spark大作业.zip

    6、熟悉使用Eclipse或IntelliJ Idea编写Java程序操作HBase数据库 要求 1、对文本文件形式的原始数据集进行预处理 2、把文本文件的数据集导入到数据仓库Hive中 3、对数据仓库Hive中的数据进行查询分析 4、使用Sqoop...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范手册 UMPAY——编码规范 日志规范 异常规范 网络 协议 TCP/IP HTTP hession file HTTPS 负载均衡 容器 JBOSS ...

    Storm流计算项目:1号店电商实时数据分析系统-11.基于HBase的Dao基类和实现类开发一.pptx

    06.Kafka基本操作和最优设置 07.Kafka Java API 简单开发测试 08.storm-kafka 详解和实战案例 09.S图表框架HighCharts介绍 10.HBase快速入门 11.基于HBase的Dao基类和实现类开发一 12.基于HBase的Dao基类和实现类...

    基于Docker构建的Hadoop开发测试环境,包含Hadoop,Hive,HBase,Spark+源代码+文档说明

    - 操作系统: CentOS 6 - Java环境: OpenJDK 8 - Hadoop: 2.7.2 - Spark: 1.6.2/2.1.0 - Hive: 1.1.1/2.1.1 - HBase: 1.2.2 - Zookeeper: 3.4.8 - 基于docker-compose管理镜像和容器,并进行集群的编排 - 所有软件的...

    BigData:Hadoop,Hbase,Scala,Spark

    BigDataHadoop,Hbase,Scala,Spark等hadoop:基于贝叶斯分类器的情感分析hbase:hbase的JavaAPI的基本操作spark:scala基础和spark基础

    quasar-hbase-client

    quasar-hbase-client:0.2.0 ...支持基本查询操作(GET,multi-GET和SCAN)。 待办事项清单 添加INSERT和UPDATE操作。 程式码范例 从表中按ID获取: final String QUORUM_LIST = " localhost:2181 " ;

Global site tag (gtag.js) - Google Analytics