`

Hbase 的Java API 操作

阅读更多

Hbase 的Java API 操作 

 

package com.wzt.dao;

//package hbaseExec2;

/*
* 创建一个students表,并进行相关操作
*/
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 HBaseJavaAPI {
  // 声明静态配置
  private static Configuration conf = null;

  static {
      conf = HBaseConfiguration.create();
      conf.set("hbase.zookeeper.quorum", "cloud5:2181,cloud6:2181,cloud7: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()));
          }
      }
  }

  // 主函数
  public static void main(String[] args) {
      try {
          String tableName = "student";
          // 第一步:创建数据库表:“student”
          String[] columnFamilys = { "info", "course" };
          HBaseJavaAPI.createTable(tableName, columnFamilys);
          // 第二步:向数据表的添加数据
          // 添加第一行数据
          if (isExist(tableName)) {
              HBaseJavaAPI.addRow(tableName, "zpc", "info", "age", "20");
              HBaseJavaAPI.addRow(tableName, "zpc", "info", "sex", "boy");
              HBaseJavaAPI.addRow(tableName, "zpc", "course", "china", "97");
              HBaseJavaAPI.addRow(tableName, "zpc", "course", "math", "128");
              HBaseJavaAPI.addRow(tableName, "zpc", "course", "english", "85");
              // 添加第二行数据
              HBaseJavaAPI.addRow(tableName, "henjun", "info", "age", "19");
              HBaseJavaAPI.addRow(tableName, "henjun", "info", "sex", "boy");
              HBaseJavaAPI.addRow(tableName, "henjun", "course", "china","90");
              HBaseJavaAPI.addRow(tableName, "henjun", "course", "math","120");
              HBaseJavaAPI.addRow(tableName, "henjun", "course", "english","90");
              // 添加第三行数据
              HBaseJavaAPI.addRow(tableName, "niaopeng", "info", "age", "18");
              HBaseJavaAPI.addRow(tableName, "niaopeng", "info", "sex","girl");
              HBaseJavaAPI.addRow(tableName, "niaopeng", "course", "china","100");
              HBaseJavaAPI.addRow(tableName, "niaopeng", "course", "math","100");
              HBaseJavaAPI.addRow(tableName, "niaopeng", "course", "english","99");
              // 第三步:获取一条数据
              System.out.println("**************获取一条(zpc)数据*************");
              HBaseJavaAPI.getRow(tableName, "zpc");
              // 第四步:获取所有数据
              System.out.println("**************获取所有数据***************");
              HBaseJavaAPI.getAllRows(tableName);

              // 第五步:删除一条数据
              System.out.println("************删除一条(zpc)数据************");
              HBaseJavaAPI.delRow(tableName, "zpc");
              HBaseJavaAPI.getAllRows(tableName);
              // 第六步:删除多条数据
              System.out.println("**************删除多条数据***************");
              String rows[] = new String[] { "qingqing","xiaoxue" };
              HBaseJavaAPI.delMultiRows(tableName, rows);
              HBaseJavaAPI.getAllRows(tableName);
              // 第七步:删除数据库
              System.out.println("***************删除数据库表**************");
              HBaseJavaAPI.deleteTable(tableName);
              System.out.println("表"+tableName+"存在吗?"+isExist(tableName));
          } else {
              System.out.println(tableName + "此数据库表不存在!");
          }

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

}

 

from  http://www.2cto.com/database/201503/381955.html 

分享到:
评论

相关推荐

    HBase Java API操作数据库示例代码-HBaseDemo.rar

    HBase Java API操作数据库示例代码-HBaseDemo.rar HBase Java API操作数据库示例代码-HBaseDemo.rar HBase Java API操作数据库示例代码-HBaseDemo.rar

    HBase Java API类介绍

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

    hbase java api 访问 增加修改删除(一)

    在本文中,我们将深入探讨如何使用HBase的Java API进行数据的增加、修改和删除操作。HBase是一个基于Google Bigtable设计的开源分布式数据库,它属于Apache Hadoop生态系统的一部分,适用于处理大规模数据存储。通过...

    Hbase调用JavaAPI实现批量导入操作

    这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase中批量导入数据。在这个过程中,我们将探讨以下几个关键知识点: 1. **HBase架构**: HBase是基于列族的存储模型,数据被...

    Hbase Java API

    HBase 的 Java API 是通过 HBaseConfiguration 对象来操作的。HBaseConfiguration 代表的是 HBase 配置信息,可以通过两个构造方式来创建:public HBaseConfiguration() 和 public HBaseConfiguration(final ...

    hbase java api 访问 查询、分页

    在HBase这个分布式列式数据库中,Java API是开发者常用的一种接口来操作HBase,包括创建表、插入数据、查询数据以及实现分页等操作。本文将深入探讨如何使用HBase Java API进行数据访问和分页查询。 首先,我们要...

    hbase java api 所需最精简 jar

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

    Hadoop+HBase+Java API

    **Java API** 是Java编程语言提供的应用程序接口,允许开发者使用Java来访问和操作Hadoop和HBase的功能。对于Hadoop,Java API主要包括`org.apache.hadoop.mapreduce`包下的类,如Job、Mapper、Reducer等,用于实现...

    HBase JavaAPI开发

    使用JavaAPI实现HBase的ddl(创建表、删除表、修改表(添加列族等))、dml(添加数据、删除数据)、dql(查询数据(get、scan))等操作 除此之外还包含一些其他操作:命名空间的应用、快照的应用等 对应(《HBase...

    使用Java API连接虚拟机HBase并进行数据库操作,Java源代码

    在本文中,我们将深入探讨如何使用Java API连接到运行在虚拟机上的HBase数据库,并进行相关的数据操作。HBase是一个分布式的、版本化的、基于列族的NoSQL数据库,它构建于Hadoop之上,适用于处理大规模的数据存储和...

    hbase资料api

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

    hbase常用JAVA API

    可以通过HBase Shell命令来查看是否成功执行了Java API的操作,例如,`hbase hbasetest.jar hbase.java.txt` 可能是一个运行包含上述操作的Java程序,并输出结果到`hbase.java.txt`的命令。 以上就是HBase常用Java...

    11-HBase Java API编程实践1

    HBase Java API 编程实践 在本实践中,我们将使用 Eclipse 编写 Java 程序,来对 HBase 数据库进行增删改...本实践中我们使用 HBase 的 Java API 实现了对 HBase 的操作,包括创建表、插入数据、查询数据和删除数据。

    javaApi_sparkhiveAPI_hbaseAPI.zip

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

    nosql实验四-HBaseShell API操作.docx

    HBase Shell API 操作详解 HBase 是一个基于分布式文件系统的 NoSQL 数据库,提供了丰富的 API 来进行数据操作。在本实验中,我们将使用 HBase Shell API 来实现基本的数据操作,包括创建表、查看所有表、插入数据...

    Hadoop平台技术 5.4.2 HBase Java API应用-教学课件

    Hadoop平台技术 5.4.2 HBase Java API应用-教学课件

    Hbase Java API详解.pdf

    在HBase Java API使用方面,HBaseConfiguration对象是每个HBase客户端都需要使用的,它代表了HBase的配置信息。可以通过默认构造函数来创建HBaseConfiguration对象,它会尝试从类路径中的hbase-default.xml和hbase-...

    Hbase的JavaAPI

    在Java环境中,HBase提供了丰富的Java API供开发者进行数据操作,包括创建表、删除表、更新表以及查询表等基本功能。下面我们将深入探讨HBase的Java API及其在实际应用中的使用。 1. **HBase连接** 在Java中使用...

    HBase 1.2.0 Javadoc API CHM

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

    Hbase调用JavaAPI实现批量导入操作.docx

    Hbase 调用 JavaAPI 实现批量导入操作 在大数据时代,Hbase 作为一个分布式、面向列的 NoSQL 数据库,广泛应用于大规模数据存储和处理中。同时,JavaAPI 作为一个强大且流行的编程语言,广泛应用于各种软件开发中。...

Global site tag (gtag.js) - Google Analytics