Hbase学习笔记:Hbase常用API(增删改查)

package com.hbase.util;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
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.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
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.client.Table;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;

public class HbaseUtility {

	public static Configuration conf;
	public static Connection conn;

	/**
	 * 类级别的初始化,只是在类加载的时候做一次 配置zookeeper的端口2181
	 * 配置zookeeper的仲裁主机名centos,如果有多个机器,主机名间用冒号隔开 配置hbase master
	 * 还有一种方式是new一个configuration对象,然后用addresource方法去添加xml配置文件 但是像这样显式的配置是会覆盖xml里的配置的
	 */
	static {
		conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.property.clientPort", "2181");
		conf.set("hbase.zookeeper.quorum", "centos");
		conf.set("hbase.master", "centos:60000");
		try {
			conn = ConnectionFactory.createConnection(conf);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 建表,建列族
	 * 
	 * @param tablename,
	 * @param ColumnFamilys
	 *            NamespaceDescriptor:维护命名空间的信息,但是namespace,一般用shell来建立
	 *            Admin:提供了一个接口来管理 HBase 数据库的表信息
	 *            HTableDescriptor:维护了表的名字及其对应表的列族,通过HTableDescriptor对象设置表的特性
	 *            HColumnDescriptor:维护着关于列族的信息,可以通过HColumnDescriptor对象设置列族的特性
	 */
	public static void createtable(String tablename, String... ColumnFamilys) throws IOException {
		Admin admin = conn.getAdmin();
		// admin.createNamespace(NamespaceDescriptor.create("my_ns").build());
		// HTableDescriptor table=new
		// HTableDescriptor(TableName.valueOf("my_ns"+tablename));
		HTab
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面是一个基于JavaHBase API,实现增删改查的操作: 首先,需要引入HBaseJava API依赖库,可以使用Maven或Gradle等工具来管理依赖,这里以Maven为例,在pom.xml中添加以下依赖: ```xml <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>1.4.10</version> </dependency> </dependencies> ``` 然后,就可以编写对HBase进行增删改查的代码了。下面是一个简单的例子,其中包括了创建表、插入数据、查询数据、更新数据和删除数据等操作: ```java 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.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; 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.client.Table; import org.apache.hadoop.hbase.util.Bytes; public class HBaseExample { private static Configuration conf; private static Connection conn; static { conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "localhost"); conf.set("hbase.zookeeper.property.clientPort", "2181"); try { conn = ConnectionFactory.createConnection(conf); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { // 创建表 String tableName = "example_table"; String[] familyNames = { "cf1", "cf2" }; createTable(tableName, familyNames); // 插入数据 String rowKey = "row1"; String familyName = "cf1"; String columnName = "column1"; String value = "value1"; putData(tableName, rowKey, familyName, columnName, value); // 查询数据 getData(tableName, rowKey, familyName, columnName); // 更新数据 value = "value2"; putData(tableName, rowKey, familyName, columnName, value); // 再次查询数据 getData(tableName, rowKey, familyName, columnName); // 删除数据 deleteData(tableName, rowKey, familyName, columnName); // 删除表 deleteTable(tableName); } /** * 创建表 */ public static void createTable(String tableName, String[] familyNames) throws Exception { Admin admin = conn.getAdmin(); if (admin.tableExists(TableName.valueOf(tableName))) { System.out.println("Table " + tableName + " already exists."); } else { TableName tn = TableName.valueOf(tableName); List<byte[]> families = new ArrayList<>(); for (String familyName : familyNames) { families.add(Bytes.toBytes(familyName)); } admin.createTable(new org

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值