package com.dis.test.hbase;
import java.io.IOException;
import java.util.ArrayList;
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.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 HbaseClientTest {
private static Configuration conf = HBaseConfiguration.create();
private static String[] cfs = new String[] { "f1", "f2" };
public static void main(String[] args) throws IOException {
HbaseClientTest test = new HbaseClientTest();
//test.createTable("test2", cfs);
//test.deleteTable("test2");
//test.writeRow("test2", new String[]{"f1", "f2"});
//test.selectRow("test2", "rows1");
//test.scaner("test2");
test.deleteRow("test2", "rows1");
}
public void createTable(String tablename, String[] cfs) throws IOException {
HBaseAdmin admin = new HBaseAdmin(conf);
if (admin.tableExists(tablename)) {
System.out.println("表已经存在");
return;
}
HTableDescriptor desc = new HTableDescriptor(tablename);
for (String f : cfs) {
desc.addFamily(new HColumnDescriptor(f));
}
admin.createTable(desc);
System.out.println("表创建成功");
}
/**
* 删除表操作
* @param tablename
* @throws IOException
*/
public void deleteTable(String tablename) throws IOException {
try {
HBaseAdmin admin = new HBaseAdmin(conf);
admin.disableTable(tablename);
admin.deleteTable(tablename);
System.out.println("表删除成功!");
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
}
}
/**
* 插入一条数据
* @param tablename
* @param cfs
*/
public void writeRow(String tablename, String[] cfs) {
try {
HTable table = new HTable(conf, tablename);
Put put = new Put(Bytes.toBytes("rows1"));
for (int j = 0; j < cfs.length; j++) {
put.add(Bytes.toBytes(cfs[j]),Bytes.toBytes(String.valueOf(1)),Bytes.toBytes("value_1"));
table.put(put);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除一行数据
* @param tablename
* @param rowkey
* @throws IOException
*/
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("删除行成功!");
}
/**
* 查找一行数据
* @param tablename
* @param rowKey
* @throws IOException
*/
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()));
}
}
/**
* 查询表中所有行
* @param tablename
*/
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();
}
}
}
需要把hbase-site.xml文件复制到classpath下,依赖的jar如下,都可以在hbase的发布包中找到
<classpathentry kind="lib" path="lib/commons-lang-2.5.jar"/>
<classpathentry kind="lib" path="lib/hadoop-core-1.0.3.jar"/>
<classpathentry kind="lib" path="lib/hbase-0.94.2.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/log4j-1.2.16.jar"/>
<classpathentry kind="lib" path="lib/slf4j-api-1.5.11.jar"/>
<classpathentry kind="lib" path="lib/slf4j-jdk14-1.5.11.jar"/>
<classpathentry kind="lib" path="lib/commons-configuration-1.9.jar"/>
<classpathentry kind="lib" path="lib/zookeeper-3.4.3.jar"/>
<classpathentry kind="lib" path="lib/protobuf-java-2.4.0a.jar"/>
<!--StartFragment -->
分享到:
相关推荐
通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST(Representational State Transfer)接口使得非Java客户端能以HTTP协议与HBase通信,使用JSON格式交换数据。这使得...
HBase客户端主要负责建立与HBase集群的连接,执行如增删查改等基本操作,并提供丰富的API供开发者调用。HBase客户端可以是命令行界面(HBase Shell)、Java API、或者各种语言的客户端库,如Python、Ruby、PHP等。...
Servlet接收到JSP发来的请求后,会根据请求类型调用相应的HBase API执行操作,然后将结果返回给JSP,最终呈现给用户。 5. **HBase API**: 为了在Java Web应用中操作HBase,我们需要使用HBase提供的Java API。这些...
### Python调用HBase的简单实例详解 #### 一、前言 在大数据处理领域,HBase 是一种基于Hadoop的分布式列存储系统,它能够高效地存储和管理大规模的数据集。Python作为一种广泛使用的编程语言,在与HBase交互时...
1. **HBase客户端API**:这是Java-HBase开发包的核心,提供了一组Java接口和类,用于连接到HBase集群,创建表,插入、查询和更新数据。例如,`HTableInterface` 和 `HBaseAdmin` 接口,以及 `Put`、`Get` 和 `Scan` ...
在Java中,我们通过HBase客户端API与HBase交互,这些API包括了`HBaseAdmin`、`HTable`、`Put`、`Get`、`Scan`等核心类。 1. **连接HBase**:在Java代码中,我们使用`HBaseConfiguration.create()`来创建一个配置...
在HBase中,RPC机制是其主要的通信手段,它支持服务端和客户端之间的通信,并允许客户端调用远程服务端的方法。 在HBase的RPC框架中,我们可以看到它将通信的角色分配为客户端和服务端。客户端通过调用服务端提供的...
3. **编写Java代码**:使用生成的Java客户端代码,创建HBase连接,实例化Thrift客户端,然后调用其提供的方法来访问HBase表。通常包括以下步骤: - 连接Thrift服务器:通过`TSocket`或`TFramedTransport`建立与...
5. **实例化HBase服务**: 使用客户端连接到HBase,实例化服务代理。 6. **执行操作**: 通过服务代理调用HBase的API,例如`get`, `put`, `delete`, `scan`等方法,执行CRUD操作。 7. **处理结果**: 获取操作结果并...
本示例“HBaseClientDemo”将重点介绍如何利用Java API来操作HBase客户端,从而实现数据的存取。 首先,我们需要了解HBase的基本概念。HBase是构建在Hadoop文件系统(HDFS)之上,提供实时读写能力的非关系型数据库...
在Java环境中,HBase提供了丰富的客户端API,使得开发者能够方便地进行数据的增删查改操作。本示例代码主要涵盖了以下几个核心知识点: 1. **HBase连接与配置** 在Java中操作HBase,首先需要创建一个`...
1. **引入依赖**: 标签中的"java habse"暗示我们需要Java的HBase客户端库。描述中提到的"所有jar"通常指的是这些库。在Java项目中,这些依赖可以通过Maven或Gradle等构建工具管理。例如,在Maven的`pom.xml`文件中,...
同时,启动器会根据这些配置动态地创建并管理HBase的客户端实例,使得开发者可以在代码中直接注入HBaseTemplate或者HBaseAdmin,进行数据的增删改查。 此外,`spring-boot-starter-hbase`还提供了对HBase的查询语句...
1. `hbase-client.jar`:这是HBase的客户端接口,包含了与HBase交互所需的类和方法。 2. `hbase-common.jar`:包含HBase通用功能,如数据序列化和配置管理。 3. `hbase-server.jar`:包含服务器端的组件,尽管是...
现在我们可以创建一个HBase的门面或者服务类来封装Thrift客户端的调用,这样可以在应用的任何地方方便地使用HBase服务。例如,创建一个`app/Services/HBaseService.php`文件: ```php use Your\Path\To\Generated\...
通过深入理解Thrift的工作原理,以及C++客户端的实现细节,开发者可以有效地构建自己的HBase客户端应用,满足各种业务需求。此外,分享这种知识和经验也有助于社区的共同进步,促进技术的普及和提升。
总结来说,`hbase-0.94.7-security.tar.gz`提供了一个完整的HBase分布式数据库实例,其中包含了安全增强功能,让用户能够在保证数据安全的前提下,充分利用HBase的大数据处理能力。理解和掌握HBase的这些核心概念和...
4. **编写Python客户端**:导入`gen-py`目录中的生成代码,实例化HBase服务的客户端,连接到运行Thrift服务的HBase节点。然后,你可以调用定义在IDL文件中的方法进行数据操作。 5. **配置HBase和Thrift**:在HBase...