HBase JavaAPI操作示例

package testHBase;

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.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 TestHBase {
	static Configuration cfg = HBaseConfiguration.create();  //得到配置对象
	public static void create(String tableName ,String columnFamily) throws Exception{
		HBaseAdmin admin = new HBaseAdmin(cfg);  //得到HBaseAdmin对象,用于操作HBase
		if(admin.tableExists(tableName)){
			System.out.println("Table" + tableName + " Exists!");
			System.exit(0);
		}
		else{
			HTableDescriptor tableDesc = new HTableDescriptor(tableName); //得到表描述对象  创建表时用到
			tableDesc.addFamily(new HColumnDescriptor(columnFamily)); //HColumnDescriptor 列族描述对象
			admin.createTable(tableDesc);  //创建表
			System.out.println("Table " + tableName + " Success!");
		}
	}

	static void put(String tableName,String row,String columnFamily,String column,String data) throws Exception{
		HTable table = new HTable(cfg,tableName);  //得到表对象
		Put put = new Put(Bytes.toBytes(row));		//插入数据
		put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),Bytes.toBytes(data));
		table.put(put);
		System.out.println("put " + row +"," + "columnFamily:" + column + "," + data);

	}

	static void get(String tableName,String row) throws Exception{
		HTable table = new HTable(cfg,tableName);
		Get get = new Get(Bytes.toBytes(row));//获取行数据
		Result result = table.get(get);
		System.out.println("Get: " + result);
	}

	static void scan(String tableName) throws Exception{
		HTable table = new HTable(cfg,tableName);
		Scan scan = new Scan(Bytes.toBytes(tableName)); ///扫描全表
		ResultScanner rs = table.getScanner(scan);
		for(Result r : rs){
			System.out.println("Scan: " + r);
		}
	}

	static boolean delete(String tableName) throws Exception{
		HBaseAdmin admin = new HBaseAdmin(cfg);
		if(admin.tableExists(tableName)){
			admin.disableTable(tableName);  //先disable
			System.out.println("Disable Table " + tableName + " Success!");
			admin.deleteTable(tableName); //再删除
			System.out.println("Delete Table " + tableName + " Success!");
		}
		return true;

	}

	public static void main(String[] args) throws Exception {
		cfg.set("hbase.master", "hadoop:60000");
		cfg.set("hbase.rootdir", "hdfs://hadoop:9000/hbase");
		cfg.set("hbase.zookeeper.quorum", "hadoop");

		String tableName = "hbase_test";
		String columnFamily = "cf";
		create(tableName, columnFamily);
		put(tableName,"row1",columnFamily,"c1","data");
		scan(tableName);
		get(tableName,"row1");
		delete(tableName);

	}
}

  

时间: 2024-11-16 13:55:28

HBase JavaAPI操作示例的相关文章

【甘道夫】HBase基本数据操作详解【完整版,绝对精品】

引言 之前详细写了一篇HBase过滤器的文章,今天把基础的表和数据相关操作补上. 本文档参考最新(截止2014年7月16日)的官方Ref Guide.Developer API编写. 所有代码均基于"hbase 0.96.2-hadoop2"版本编写,均实测通过. 欢迎转载,请注明来源: http://blog.csdn.net/u010967382/article/details/37878701 概述 对于建表,和RDBMS类似,HBase也有namespace的概念,可以指定表空

hbase简单操作

hbase有hbase shell以及hbase 客户端api两种方式进行hbase数据库操作: 首先,hbase shell是在linux命令行进行操作,输入hbase shell命令,进入shell命令行. 输入 help  可以看到命令分组 上面是hbase的一些操作,要查看具体某一个操作,例如scan的使用方法,在具体的某一个创建的实例后使用help参数 比如:create 't1' ,'ft:h1' scan 't1' help 后就可以显示相应的scan的操作,根据帮助提示信息即可查

HBase API 操作范例

package com.test.hbase.api; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException; import java.util.ArrayList; imp

用gdb分析core文件及常见gdb命令操作示例

1.概述 在实际的软件开发项目中,程序出现问题是在所难免的.遥想本人参加工作之后首次遇到程序的情景,至今还历历在目.之前的经验告诉我,我们越是惊慌失措,问题就越是解决不了.我们要先让自己平静下来,然后再寻找解决程序问题的办法. 在Linux下做开发的朋友,想必都与core文件打过交道.当看到自己的程序运行之后出现core时,很多人都慌乱了,仿佛天快要塌下来一样.其实,我们大可不必如此,只要我们掌握了用gdb调试core文件的办法,依然可以很快定位程序问题,一举将bug消灭掉.有关Linux co

java 线程 原子类相关操作示例 thinking in java4 目录21.3.4

java 线程  原子类相关操作示例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; /** * 原子类,

java目录相关操作 示例代码

package org.rui.io; import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.regex.Pattern; /** * 目录列表器 测试 * * @author lenovo * */ //Args:"C:/Users/lenovo/Pictures/screen/*\.jpg" public class DirList { public

HBase Shell操作

Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统.     Hbase不同于一般的关系型数据库(RDBMS).是一种适用于非结构化数据存储的数据库,且Hbase是基于列的数据库. 下面的内容基于我们已经安装好hadoop.hbase. 一.hbase shell 介绍 hbase shell是用户和hbase 交互的接口之一,当然还可以通过其它方式比如java api等 下表列出了 hbase 基本命令

字符串去空格以及反转操作示例

1.字符串去空格 package tan; public class CopyOfStringTest { public static void main(String[] args) { String s = " tan at guigu "; sop(s); String x = MyTrim(s); sop(x); } public static void sop(String str) { System.out.println(str); } // 1.去除字符串两端的空格 p

验证码接收平台原理和网页版运行操作示例

现在市面上能够使用的验证码接收平台有:    Y码:www.yma0.com 牛码:www.niuma.org 接码:www.7vs.net 极码:www.yzm8.net 这些平台得以实现的运行原理: 思路:       A:获得验证码:      1.找到相关的表.      2.用什么发送,post,get ,ajax,当然ajax首选      3.post之前要js先判断是手机号码11位,并且全部都是数字,或者用正则也行.      4.用ajax发送数据data,要对数据进行检验,过