HBase读写方式 scala/java篇(一)

HBase 写操作有三种实现:
  1. HConnection
  2. HTablePool
  3. BufferedMutator

这里将写下三篇文章分别来详细的说明 所用方法:
先说第一种方式:这里我们使用HBase2.1.2版本,基于不同版本可能有不同的写法改变。

java类 作用.
HBaseConfiguration 初始化 hbase配置
HBaseAdmin Admin类管理 hbase表的创建
Put 添加 hbase表中数据
Get 查询 hbase表中数据
Scan 检索 hbase表中数据
Result 单个查询 hbase表中数据
ResultScanner 检索结果 hbase表中数据

创建HBase表,是通过Admin来执行的,表和列簇则是分别通过TableDescriptorBuilder和ColumnFamilyDescriptorBuilder来构建。

HBase查询分为get、scan、scan和filter结合。filter过滤器又分为RowFilter(rowKey过滤器)、SingleColumnValueFilter(列值过滤器)、ColumnPrefixFilter(列名前缀过滤器)

// # 写个hbaseUtil类  
// IEDA代码测试 访问伪分布式上的 HBase,OK !
package com.gcl.hbase

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase._
import org.apache.hadoop.hbase.client._
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.client._
import scala.collection.mutable


object hbaseUtil {
   
  var conf: Configuration = _
  //线程池
  lazy val connection: Connection = ConnectionFactory.createConnection(conf)
  lazy val admin: Admin = connection.getAdmin

  /**
    *  HBase conf
    * @param quorum : hbase的 ZK地址
    * @param port   : ZK的 port:2181
    */
  def setConf(quorum: String, port: String): Unit = {
   
    val conf = HBaseConfiguration.create()
    conf.set("hbase.zookeeper.quorum", quorum)
    conf.set("hbase.zookeeper.property.clientPort", port)
    this.conf = conf
  }
  /***
    *  判断 该表是否存在,不存在则创建.
    *  HTableDescriptor :构建表
    *  HColumnDescriptor:构建列族
    */
  def createTable(tableName: String, columnFamily: String): Unit = {
   
    val tbName = TableName.valueOf(tableName)
    if (!admin.tableExists(tbName)) {
   
      val htableDescriptor = new HTableDescriptor(tbName)
      val hcolumnDescriptor = new HColumnDescriptor(columnFamily)
      htableDescriptor.addFamily(hcolumnDescriptor)
      admin.createTable(htableDescriptor)
    }else {
   
      println("表:"+ tableName+ " 已经存在.")
    }
  }
  /**
    * 当前 hbase版本 1.3.1,HBaseAdmin()是1.X之前的版本. 测试也可以使用.但不建议.
    * HTableDescriptor()来构建表, HColumnDescriptor()来构架列族。
    */
  def createTable(tableName: String, columnFamilys: Array[String]): Unit = {
   
    val hAdmin: HBaseAdmin = new HBaseAdmin(conf)
    if (hAdmin.tableExists(tableName)) {
   
      println("表 " + tableName + " 已经存在")
      return
    } else {
   
      val tableDesc: HTableDescriptor = new HTableDescriptor(tableName)
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值