Java API 与HBase交互实例

HBase新版本Java API编程实战及基本操作方法封装 我的HBase版本是0.98 首先说明一下,如果用eclipse操作hbase时,如果报Unknown host错误,找不到主机,是因为你没有配IP地址的映射 方法是 找到你的系统盘里面的C:\Windows\System32\drivers\etc下的hosts文件,打开,增加一个映射 加一个映射 192.168.52.140 master话不多说,直接看代码,注释很详细 import 阅读详情

HBase提供了Java API,可以通过API来实现对HBase的一些操作。


package hbase;

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

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
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.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 HBaseOperation {

	private Configuration config;
	private HBaseAdmin admin;

	public HBaseOperation() {
	}

	public HBaseOperation(Configuration config)
			throws MasterNotRunningException, ZooKeeperConnectionException,
			IOException {
		this.config = config;
		this.admin = new HBaseAdmin(config);
	}

	/**
	 * 创建表
	 * 
	 * @param tableName
	 *            表名
	 * @param family
	 *            列族名
	 */
	public void createTable(String tableName, String[] colFamilies)
			throws IOException {

		HTableDescriptor desc = new HTableDescriptor(
				TableName.valueOf(tableName));
		for (int i = 0; i < colFamilies.length; i++) {
			desc.addFamily(new HColumnDescriptor(colFamilies[i]));
		}
		if (this.admin.tableExists(tableName)) {
			System.out.println("table exists!");
			System.exit(0);
		} else {
			this.admin.createTable(desc);
			System.out.println("create table success!");
		}

	}

	/**
	 * 删除表
	 * 
	 * @param tableName
	 *            表名
	 */
	public void deleteTable(String tableName) throws IOException {
		if (this.admin.tableExists(tableName)) {
			admin.deleteTable(tableName);
			System.out.println("delete table success!");
		} else {
			System.out.println("table not exists!");
		}
	}

	/**
	 * 
	 * @param tableName
	 *            表名
	 * @param rowkey
	 *            行键
	 * @param family
	 *            列族名
	 * @param qualifier
	 *            列名
	 * @param value
	 *            列的值
	 */
	public void insertRecord(String tableName, String rowkey, String family,
			String qualifier, String value) throws IOException {
		HTable table = new HTable(config, tableName);// HTabel负责跟记录相关的操作如增删改查等
		Put put = new Put(Bytes.toBytes(rowkey));// 设置rowkey
		put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier),
				Bytes.toBytes(value));// 将指定的列族中的某一列以及该列的值添加到put实例中
		table.put(put);
		System.out.println("insert record success!");
		table.close();
	}

	/**
	 * 根据rowkey查询某一行记录
	 * 
	 * @param tableName
	 *            表名
	 * @param rowkey
	 *            行键
	 * @return
	 */
	public Result getRecord(String tableName, String rowkey) throws IOException {
		HTable table = new HTable(config, tableName);

		Get get = new Get(Bytes.toBytes(rowkey));
		Result result = table.get(get);

		table.close();
		return result;
	}

	/**
	 * 查询某一列的值
	 * 
	 * @param tableName
	 *            表名
	 * @param rowkey
	 *            行键
	 * @param family
	 *            列族名
	 * @param qualifier
	 *            列名
	 */
	public Result getRecordByColumn(String tableName, String rowkey,
			String family, String qualifier) throws IOException {
		HTable table = new HTable(config, tableName);

		Get get = new Get(Bytes.toBytes(rowkey));
		get.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier));
		Result result = table.get(get);

		table.close();
		return result;
	}

	/**
	 * 遍历查询所有记录
	 * 
	 * @param tableName
	 *            表名
	 */
	public List<Result> getAllRecord(String tableName) throws IOException {
		HTable table = new HTable(config, tableName);
		Scan scan = new Scan();
		ResultScanner scanner = table.getScanner(scan);
		List<Result> list = new ArrayList<Result>();
		for (Result result : scanner) {
			list.add(result);
		}
		table.close();
		return list;
	}

	/**
	 * 删除一行记录
	 * 
	 * @param tableName
	 *            表名
	 * @param rowkey
	 *            行键
	 */
	public void deleteRow(String tableName, String rowkey) throws IOException {
		HTable table = new HTable(config, tableName);

		Delete delete = new Delete(Bytes.toBytes(rowkey));
		table.delete(delete);

		System.out.println("row are deleted!");
		table.close();
	}

	public void deleteColumn(String tableName, String rowkey, String family,
			String qualifier) throws IOException {
		HTable table = new HTable(config, tableName);

		Delete delete = new Delete(Bytes.toBytes(rowkey));
		delete.deleteColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier));
		table.delete(delete);

		System.out.println("clomun are deleted!");
		table.close();
	}
}


测试类:

package hbase;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Result;

public class HBaseTest {
	public static void main(String[] args) throws MasterNotRunningException,
			ZooKeeperConnectionException, IOException {
		// 1.初始化HBaseOperation
		Configuration config = new Configuration();
		config.set("hbase.zookeeper.quorum", "H01,H02,H03");
		config.set("hbase.zookeeper.property.clientPort", "2181");
		HBaseOperation hbase = new HBaseOperation(config);

		// 2. 测试相应操作
		// 2.1 创建表
		String tableName = "blog";
		String colFamilies[] = { "article", "author" };
		hbase.createTable(tableName, colFamilies);

		// 2.2 插入一条记录
		hbase.insertRecord(tableName, "row1", "article", "title", "hadoop");
		hbase.insertRecord(tableName, "row1", "author", "name", "tom");
		hbase.insertRecord(tableName, "row1", "author", "nickname", "tt");

		// 2.2 查询一条记录
		Result rs1 = hbase.getRecord(tableName, "row1");
		for (Cell cell : rs1.rawCells()) {
			System.out.println(new String(cell.getRowArray()));
			System.out.println(new String(cell.getFamilyArray()));
			System.out.println(new String(cell.getQualifierArray()));
			System.out.println(new String(cell.getValueArray()));
		}

		// 2.3 查询所有记录
		List<Result> list = hbase.getAllRecord(tableName);
		Iterator<Result> it = list.iterator();
		while (it.hasNext()) {
			Result rs2 = it.next();
			for (Cell cell : rs2.rawCells()) {
				System.out.println("row key is : "
						+ new String(cell.getRowArray()));
				System.out.println("family is  : "
						+ new String(cell.getFamilyArray()));
				System.out.println("qualifier is:"
						+ new String(cell.getQualifierArray()));
				System.out.print("timestamp is:" + cell.getTimestamp());
				System.out.println("Value  is  : "
						+ new String(cell.getValueArray()));
			}
		}
		
		
	}
}


HBase总结(十二)Java API 与HBase交互实例 HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要 阅读详情

相关推荐

告别反复格式化!用Ventoy制作2025年终极启动盘,Windows/Linux/macOS一网打尽

本文详细介绍了如何使用Ventoy制作2025年终极多系统启动盘,彻底告别反复格式化U盘的烦恼。Ventoy通过创新的引导加载器架构,允许用户在一个U盘内同时存放并直接启动Windows、Linux、macOS等多种系统镜像和WePE等维护工具,实现真正的非破坏性管理和极高的U盘利用率。文章涵盖从安装配置、镜像库构建到安全启动设置等全流程实战指南。

weixin_29280219的博客 242

hbase两个典型应用实例

本文介绍hbase的两个典型应用实例OPEN

u010282707的专栏 5903

从零搭建 AI 运维 Agent:告警自动诊断 + 修复的完整技术方案

适合读者:管理 5-50 台服务器的运维/SRE 工程师、技术负责人 技术栈:FastAPI + React + PostgreSQL + Redis + DeepSeek 关键词:AI运维、AIOps、自动化运维、智能告警、告警修复、Runbook自动化、DevOps、SRE、DeepSeek运维

weixin_38359457的博客 1640

CDH使用秘籍(一):Cloudera Manager和Managed Service的数据库

从业务发展需求,大数据平台需要使用spark作为机器学习、数据挖掘、实时计算等工作,所以决定使用Cloudera Manager5.2.0版本和CDH5。 以前搭建过Cloudera Manager4.8.2和CDH4,在搭建Cloudera Manager5.2.0版本的时候,发现相应的Service Host Monitor 和 Service Monitor不能配置外部表,刚开是还以为是配置出错,后来才发现应该是新版本的Cloudera的存储改变方式了。查了很多文档,果然发现,新版本中Service

4212

Unity游戏开发必备:HybridCLR热更新实战教程(含iOS/Android适配指南)

本文详细介绍了HybridCLR在Unity游戏开发中的热更新实战教程,包括iOS/Android平台适配指南。通过环境配置、项目结构规划、热更新工作流实现等步骤,帮助开发者高效掌握C#热更新技术,解决移动游戏快速迭代的痛点问题。

weixin_29011395的博客 441

verilog常用模块1——按键消抖模块详解

按键消抖模块key_filter 1. 原理介绍 如图,按键未按下时keys信号为高电平,按下则为低电平;通过检测keys信号电平,就可以判断按键状态。 但反作用弹簧会导致抖动现象,电平信号出现一段不确定波形 一般情况下,抖动的电平信号为1的持续时间不会超过20ms,只要通过对抖动波形的发生时长计时(计数),当为1的时长超过20ms,则可判定 进入了发生了按键按下/释放动作,并确定按键状态...

coin的博客 1万+

hbase API操作范例

public class HbaseDemo { private Configuration conf = null; @Before public void init(){ conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "lp5,lp6,lp7"); } /* * 新建表

编程感想记录 2512

【Bug已解决】codex: conversation context window exceeded / Token limit reached — CodeX CLI 上下文窗口超限解决方案

CodeX CLI 上下文窗口超限(context_length_exceeded)的解决方案,含开新会话、更大窗口模型、精简提示与限制工具输出。

博客 4183

HBase总结-Java API 与HBase交互实例

http://blog.youkuaiyun.com/lifuxiangcaohui/article/details/39997391 HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要 [html] view plain copy   import java.io.IOExcepti

z69183787的专栏 5944

磁悬浮分子泵:起源、现状与未来趋势深度解析

摘要 磁悬浮分子泵作为高真空获取的关键设备,通过磁悬浮技术实现转子无接触高速运转,大幅提升了真空系统的性能和可靠性。本文系统梳理了分子泵从机械轴承到磁悬浮的技术演变历程,分析了当前行业格局及主要厂商产品特性,包括爱德华兹、普发真空等国际巨头的技术优势。研究进一步探讨了磁悬浮分子泵在半导体制造、科研设备等领域的核心应用,通过数学模型揭示了其性能参数关系。最后,展望了未来在智能化、节能化等方面的发展趋势,为相关领域的技术创新提供参考。 关键词:磁悬浮分子泵;高真空技术;半导体制造;科研设备;技术发展

技术工作者 691

二极管钳位电路、限幅电路和检波电路Multisim电路仿真

本文系统介绍了二极管钳位、限幅和检波三种基础电路的工作原理及Multisim仿真验证。钳位电路通过电容-二极管配合实现波形整体平移,将波峰或波谷固定在指定电压;限幅电路利用二极管导通特性削除信号超出设定阈值的部分;检波电路则通过半波整流和电容滤波从调幅波中提取音频信号。三种电路均通过Multisim仿真验证了理论分析结果,展示了二极管在信号处理中的关键作用。这些基础电路广泛应用于信号调理、电平保护和通信解调等领域。

XU157303764的博客 1127

HBase入门之七Java API 与HBase交互实例

import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.

云智禅师的专栏 487

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java API 与HBase交互实例 (总结11)

HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguratio

Jason的专栏 342

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: HBase Java API
下一篇: HBase—扫描器
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值