`

HBASE API

阅读更多
package org.jumore.test;

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.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 HBaseTest {

    // 声明静态配置
    private static Configuration conf = null;

    static {
        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "192.168.1.141,192.168.1.143,192.168.1.145");
//        conf.set("hbase.zookeeper.quorum", "192.168.23.31,192.168.23.33,192.168.23.34");
       // conf.set("hbase.zookeeper.quorum", "172.18.203.113,172.18.203.114,172.18.203.115,172.18.203.116");
        conf.set("hbase.zookeeper.property.clientPort", "2181");
    }

    //判断表是否存在
    private static boolean isExist(String tableName) throws IOException {
        HBaseAdmin hAdmin = new HBaseAdmin(conf);
        return hAdmin.tableExists(tableName);
    }

    // 创建数据库表
    public static void createTable(String tableName, String[] columnFamilys)
            throws Exception {
        // 新建一个数据库管理员
        HBaseAdmin hAdmin = new HBaseAdmin(conf);
        if (hAdmin.tableExists(tableName)) {
            System.out.println("表 "+tableName+" 已存在!");
            System.exit(0);
        } else {
            // 新建一个students表的描述
            HTableDescriptor tableDesc = new HTableDescriptor(tableName);
            // 在描述里添加列族
            for (String columnFamily : columnFamilys) {
                tableDesc.addFamily(new HColumnDescriptor(columnFamily));
            }
            // 根据配置好的描述建表
            hAdmin.createTable(tableDesc);
            System.out.println("创建表 "+tableName+" 成功!");
        }
    }

    // 删除数据库表
    public static void deleteTable(String tableName) throws Exception {
        // 新建一个数据库管理员
        HBaseAdmin hAdmin = new HBaseAdmin(conf);
        if (hAdmin.tableExists(tableName)) {
            // 关闭一个表
            hAdmin.disableTable(tableName);
            hAdmin.deleteTable(tableName);
            System.out.println("删除表 "+tableName+" 成功!");
        } else {
            System.out.println("删除的表 "+tableName+" 不存在!");
            System.exit(0);
        }
    }

    // 添加一条数据
    public static void addRow(String tableName, String row,
            String columnFamily, String column, String value) throws Exception {
        HTable table = new HTable(conf, tableName);
        Put put = new Put(Bytes.toBytes(row));// 指定行
        // 参数分别:列族、列、值
        put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
                Bytes.toBytes(value));
        table.put(put);
  
    }

    // 删除一条(行)数据
    public static void delRow(String tableName, String row) throws Exception {
        HTable table = new HTable(conf, tableName);
        Delete del = new Delete(Bytes.toBytes(row));
        table.delete(del);
    }

    // 删除多条数据
    public static void delMultiRows(String tableName, String[] rows)
            throws Exception {
        HTable table = new HTable(conf, tableName);
        List<Delete> delList = new ArrayList<Delete>();
        for (String row : rows) {
            Delete del = new Delete(Bytes.toBytes(row));
            delList.add(del);
        }
        table.delete(delList);
    }

    // 获取一条数据
    public static void getRow(String tableName, String row) throws Exception {
        HTable table = new HTable(conf, tableName);
        Get get = new Get(Bytes.toBytes(row));
        Result result = table.get(get);
        // 输出结果,raw方法返回所有keyvalue数组
        for (KeyValue rowKV : result.raw()) {
            System.out.print("行名:" + new String(rowKV.getRow()) + " ");
            System.out.print("时间戳:" + rowKV.getTimestamp() + " ");
            System.out.print("列族名:" + new String(rowKV.getFamily()) + " ");
            System.out.print("列名:" + new String(rowKV.getQualifier()) + " ");
            System.out.println("值:" + new String(rowKV.getValue()));
        }
    }

    // 获取所有数据
    public static void getAllRows(String tableName) throws Exception {
        HTable table = new HTable(conf, tableName);
        Scan scan = new Scan();
        ResultScanner results = table.getScanner(scan);
        // 输出结果
        for (Result result : results) {
            for (KeyValue rowKV : result.raw()) {
//                System.out.print("行名:" + new String(rowKV.getRow()) + " ");
//                System.out.print("时间戳:" + rowKV.getTimestamp() + " ");
//                System.out.print("列族名:" + new String(rowKV.getFamily()) + " ");
//                System.out
//                        .print("列名:" + new String(rowKV.getQualifier()) + " ");
//                System.out.println("值:" + new String(rowKV.getValue()));
                String putStr = "put " + "\""+tableName+"\"" + ", " + "\"" +new String(rowKV.getRow())+ "\"" + ", " + "\""+  new String(rowKV.getFamily()) + ":" + new String(rowKV.getQualifier()) + "\""+  ", "+ "\"" + new String(rowKV.getValue())+ "\"";
                System.out.println(putStr);
            }
        }
    }

    // 主函数
//    public static void main(String[] args) {
//        try {
//            String tableName = "huym:student";
//            // 第一步:创建数据库表:“student”
//            String[] columnFamilys = { "info", "course" };
//            HBaseTest.createTable(tableName, columnFamilys);
//            // 第二步:向数据表的添加数据
//            // 添加第一行数据
//            if (isExist(tableName)) {
//                HBaseTest.addRow(tableName, "zpc", "info", "age", "20");
//                HBaseTest.addRow(tableName, "zpc", "info", "sex", "boy");
//                HBaseTest.addRow(tableName, "zpc", "course", "china", "97");
//                HBaseTest.addRow(tableName, "zpc", "course", "math", "128");
//                HBaseTest.addRow(tableName, "zpc", "course", "english", "85");
//               
//                HBaseTest.addRow(tableName, "niaopeng", "course", "english","99");
//                // 第三步:获取一条数据
//                System.out.println("**************获取一条(zpc)数据*************");
//                HBaseTest.getRow(tableName, "zpc");
//                // 第四步:获取所有数据
//                System.out.println("**************获取所有数据***************");
//                HBaseTest.getAllRows(tableName);
//
//                // 第五步:删除一条数据
//                System.out.println("************删除一条(zpc)数据************");
//                HBaseTest.delRow(tableName, "zpc");
//                HBaseTest.getAllRows(tableName);
//                // 第六步:删除多条数据
//                System.out.println("**************删除多条数据***************");
//                String rows[] = new String[] { "qingqing","xiaoxue" };
//                HBaseTest.delMultiRows(tableName, rows);
//                HBaseTest.getAllRows(tableName);
//                // 第七步:删除数据库
//                System.out.println("***************删除数据库表**************");
//                HBaseTest.deleteTable(tableName);
//                System.out.println("表"+tableName+"存在吗?"+isExist(tableName));
//            } else {
//                System.out.println(tableName + "此数据库表不存在!");
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }


   
    public static void main(String[] args) {
        try {
            String tableName = "jmnx:transaction";
         
         
            // 添加第一行数据
            if (isExist(tableName)) {
              
                // 第三步:获取一条数据
                //System.out.println("**************获取一条(zpc)数据*************");
                //HBaseTest.getRow(tableName, "platform");
                // 第四步:获取所有数据
               // System.out.println("**************获取所有数据***************");
                HBaseTest.getAllRows(tableName);


            } else {
                System.out.println(tableName + "此数据库表不存在!");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
分享到:
评论

相关推荐

    hbase API

    HBase API是开发者与HBase进行交互的主要接口,通过这个API可以实现对HBase表的创建、删除、增删改查等操作。 1. **HBase架构** - **Region Server**: HBase的数据存储在Region Server上,每个Region Server负责一...

    HBase api说明

    HBase api 大数据,HBASE.094.5_API.chm

    javaApi_sparkhiveAPI_hbaseAPI.zip

    本压缩包"javaApi_sparkhiveAPI_hbaseAPI.zip"包含了2019年8月至10月期间针对这些技术的Java版API实现,以及与Spark相关的Hive和HBase API。以下是关于这些技术的详细知识: 1. **Java API for Hive**: - **Hive*...

    hbase api chm

    hbase api chm

    HBase API帮助文档

    HBASE AP

    hbase资料api

    HBase数据查询API HBase是一种分布式的、面向列的NoSQL数据库,主要应用于存储大量的半结构化数据。HBase提供了多种查询方式,包括单条查询和批量查询。 单条查询 单条查询是通过rowkey在table中查询某一行的数据...

    【Python3】Hbase API

    本篇将详细介绍如何利用Python3的Hbase API来连接和操作HBase数据库。 首先,我们需要了解Python中用于连接HBase的库——HappyBase。HappyBase是一个Python库,它提供了一种更面向对象的方式来与HBase交互,使...

    HbaseAPI.java

    HbaseAPI.java

    HBase 1.2.0 Javadoc API CHM

    自行制作的HBase 1.2.0 Javadoc API CHM版本。内容抽取自官方站点网页

    HBaseApi.java

    HBase-APi操作demo

    HBase中文API

    HBase中文API为开发者提供了在中文环境中操作HBase的便利。 1. **入门** - **介绍**: HBase为大数据处理提供了实时读写能力,特别适合于存储海量稀疏数据。 - **快速开始**: 开发者通常需要了解如何创建表、插入...

    hbase java api 所需最精简 jar

    "hbase java api 所需最精简 jar"这个标题意味着我们将探讨的是为了在Java环境中最小化依赖,但仍能实现基本HBase操作所需的JAR文件。 首先,我们需要理解HBase Java API的核心组件。HBase的Java客户端API提供了一...

    hbase api demo

    在这个“hbase api demo”中,我们将深入探讨如何使用HBase的API进行基本的数据操作,包括创建表、插入数据以及通过关键字检索和特定查询条件获取数据。 首先,让我们了解HBase的基本概念。在HBase中,数据被组织成...

    HBase Java API类介绍

    ### HBase Java API类介绍 #### 一、概述 HBase是一个分布式的、面向列的开源数据库,基于Google的Bigtable论文实现。它适合于非结构化数据存储,并且能够实时处理PB级别的数据。HBase提供了Java API供开发者使用...

    flink-hbase-2.11-1.10.0-API文档-中文版.zip

    包含翻译后的API文档:flink-hbase_2.11-1.10.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-hbase_2.11:1.10.0; 标签:flink、11、apache、hbase_2、jar包、java、API文档、中文版; ...

    Hbase的api

    hbase的api手册,包含hbase的变成接口和参数说明

    Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据).pdf

    在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...

    hbase-metrics-api-1.4.3-API文档-中文版.zip

    赠送jar包:hbase-metrics-api-1.4.3.jar; 赠送原API文档:hbase-metrics-api-1.4.3-javadoc.jar; 赠送源代码:hbase-metrics-api-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-metrics-api-1.4.3.pom; ...

    hbase 0.9 api

    "Hbase 0.9 API"指的是HBase在0.94.5版本中的客户端API,这个版本是HBase发展历史上的一个重要里程碑,为开发者提供了丰富的功能来操作HBase数据库。 首先,HBase的API主要分为两种:Java API和Shell命令。Java API...

Global site tag (gtag.js) - Google Analytics