设为首页 加入收藏

TOP

HBase JAVA API实现HBase表操作
2019-02-19 13:46:29 】 浏览:66
Tags:HBase JAVA API 实现 操作
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37581329/article/details/79825973

1.在centos系统中创建好hadoop,hbase集群,并启动,验证运行正常。

2.新建eclipse Maven工程,工程名为MyHbase.

3.把hadoop和hbase的相应配置文件分别放置到src/main/resource/hadoop和src/main/resource/hbase目录

3.把上一步的hadoop目录和hbase目录文件添加到Libraries(Add Class Folder),

4.把hbase集群上hbase安装目录下面的lib文件夹下的jar文件全部拷贝到windows系统,并添加到eclipse工程的libraries,如下


5.最终eclipse目录结构如下:


6.新建HBaseTest.java文件,代码如下:

package com.MyHBase;

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 HBaseTest {
	
	   private static final String TABLE_NAME = "demo_table";

	      public static Configuration conf = null;
	      public HTable table = null;
	      public HBaseAdmin admin = null;

	      static {
	        conf = HBaseConfiguration.create();
	        System.out.println(conf.get("hbase.zookeeper.quorum"));
	      }

	      /**
	       * 创建一张表
	       */
	      public static void creatTable(String tableName, String[] familys)
	          throws Exception {
	        HBaseAdmin admin = new HBaseAdmin(conf);
	        if (admin.tableExists(tableName)) {
	          System.out.println("table already exists!");
	        } else {
	          HTableDescriptor tableDesc = new HTableDescriptor(tableName);
	          for (int i = 0; i < familys.length; i++) {
	            tableDesc.addFamily(new HColumnDescriptor(familys[i]));
	          }
	          admin.createTable(tableDesc);
	          System.out.println("create table " + tableName + " ok.");
	        }
	      }

	      /**
	       * 删除表
	       */
	      public static void deleteTable(String tableName) throws Exception {
	        try {
	          HBaseAdmin admin = new HBaseAdmin(conf);
	          admin.disableTable(tableName);
	          admin.deleteTable(tableName);
	          System.out.println("delete table " + tableName + " ok.");
	        } catch (MasterNotRunningException e) {
	          e.printStackTrace();
	        } catch (ZooKeeperConnectionException e) {
	          e.printStackTrace();
	        }
	      }

	      /**
	       * 插入一行记录
	       */
	      public static void addRecord(String tableName, String rowKey,
	          String family, String qualifier, String value) throws Exception {
	        try {
	          HTable table = new HTable(conf, tableName);
	          Put put = new Put(Bytes.toBytes(rowKey));
	          put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier),
	              Bytes.toBytes(value));
	          table.put(put);
	          System.out.println("insert recored " + rowKey + " to table "
	              + tableName + " ok.");
	        } catch (IOException e) {
	          e.printStackTrace();
	        }
	      }

	      /**
	       * 删除一行记录
	       */
	      public static void delRecord(String tableName, String rowKey)
	          throws IOException {
	        HTable table = new HTable(conf, tableName);
	        List list = new ArrayList();
	        Delete del = new Delete(rowKey.getBytes());
	        list.add(del);
	        table.delete(list);
	        System.out.println("del recored " + rowKey + " ok.");
	      }

	      /**
	       * 查找一行记录
	       */
	      public static void getOneRecord(String tableName, String rowKey)
	          throws IOException {
	        HTable table = new HTable(conf, tableName);
	        Get get = new Get(rowKey.getBytes());
	        Result rs = table.get(get);
	        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()));
	        }
	      }

	      /**
	       * 显示所有数据
	       */
	      public static void getAllRecord(String tableName) {
	        try {
	          HTable table = new HTable(conf, tableName);
	          Scan s = new Scan();
	          ResultScanner ss = table.getScanner(s);
	          for (Result r : ss) {
	            for (KeyValue kv : r.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()));
	            }
	          }
	        } catch (IOException e) {
	          e.printStackTrace();
	        }
	      }

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 try {
             String tablename = "scores";
             String[] familys = { "grade", "course" };
             HBaseTest.creatTable(tablename, familys);

             // add record zkb
             HBaseTest.addRecord(tablename, "zkb", "grade", "", "5");
             HBaseTest.addRecord(tablename, "zkb", "course", "", "90");
             HBaseTest.addRecord(tablename, "zkb", "course", "math", "97");
             HBaseTest.addRecord(tablename, "zkb", "course", "art", "87");
             // add record baoniu
             HBaseTest.addRecord(tablename, "baoniu", "grade", "", "4");
             HBaseTest
                 .addRecord(tablename, "baoniu", "course", "math", "89");

             System.out.println("===========get one record========");
             HBaseTest.getOneRecord(tablename, "zkb");

             System.out.println("===========show all record========");
             HBaseTest.getAllRecord(tablename);

             System.out.println("===========del one record========");
             HBaseTest.delRecord(tablename, "baoniu");
             HBaseTest.getAllRecord(tablename);

             System.out.println("===========show all record========");
             HBaseTest.getAllRecord(tablename);
           } catch (Exception e) {
             e.printStackTrace();
           }
         }

}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇《转载,亲测通过》hbase hive .. 下一篇HBASE中column family的设计,row..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目