Hbase namespace操作入门

24 篇文章 2 订阅

Hbase shell操作

前提:启动zookeeper,
之后要启动hbase,之后再启动hbase shell

start-hbase.sh
hbase shell

如果不启动hbase 就启动hbase shell会报错的!

ERROR: Can't get master address from ZooKeeper; znode data == null

所有命令不需要分号!

1) list_namespace:查询所有命名空间

hbase(main):020:0> list_namespace

2) list_namespace_tables: 查询指定命名空间的表

hbase(main):009:0> list_namespace_tables 'default'
TABLE
Student
student

3) create_namespace: 创建指定的命名空间

hbase(main):023:0> create_namespace 'myns'
hbase(main):024:0> list_namespace

4)describe_namespace: 查询指定命名空间的描述信息(也叫结构信息,属性信息)

hbase(main):023:0> describe_namespace 'ns4'
DESCRIPTION
{NAME => 'ns4'}

5) alter_namespace :修改命名空间的描述信息
添加描述信息

hbase(main):026:0> alter_namespace 'ns4', {METHOD=>'set','name'=>'lisi'}
0 row(s) in 0.0730 seconds
hbase(main):027:0> describe_namespace 'ns4'
DESCRIPTION
{NAME => 'ns4', name => 'lisi'}

6) drop_namespace:删除指定命名空间’name

hbase(main):032:0> drop_namespace 'ns4'
0 row(s) in 0.1150 seconds
hbase(main):033:0> list_namespace
NAMESPACE
default
hbase
mydbb

Hbase scala操作

新建maven工程,并导入依赖

<dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.2.1</version>
</dependency>

创建nameSpace

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase.NamespaceDescriptor
import org.apache.hadoop.hbase.client.{Admin, Connection, ConnectionFactory}

object TestConn extends App{
  //创建一个hadoop的配置对象
  private val conf = new Configuration()
  //配置zookeeper的参数
  conf.set("hbase.zookeeper.quorum", "mypc01:2181,mypc02:2181,mypc03:2181")
  //创建一个连接
  private val connection: Connection = ConnectionFactory.createConnection(conf)
  //获取一个操作Hbase的客户端对象
  private val admin: Admin = connection.getAdmin
  //创建一个namespace的描述器
  private val descriptor: NamespaceDescriptor = NamespaceDescriptor.create("csdn").build()
  //客户端进行提交创建
  admin.createNamespace(descriptor)
  //关闭连接
  connection.close()
  //关闭客户端
  admin.close()
}

连接Hbase比较麻烦,可以进行封装

object HbaseUtil {
  private val conf = new Configuration()
  conf.set("hbase.zookeeper.quorum", "mypc01:2181,mypc02:2181,mypc03:2181")
  private val connection: Connection = ConnectionFactory.createConnection(conf)
  var admin: Admin = _;
  def getAdmin: Admin ={
    admin= connection.getAdmin
    admin
  }
  def closeAdmin(): Unit ={
    admin.close()
  }
}

列出所有ns

object ListNS extends App{
  //获取admin客户端
  val admin=HbaseUtil.getAdmin
  //获取所有ns的描述器
  private val descriptors: Array[NamespaceDescriptor] = admin.listNamespaceDescriptors()
  for(x<-descriptors){
    println(x.getName)
  }
}
NS3
SYSTEM
csdn

列出所有ns的表名

object ListTables extends App{
  //获取客户端admin
  val admin=HbaseUtil.getAdmin
  //获取所有的ns数组并遍历取出
  private val descriptors: Array[NamespaceDescriptor] = admin.listNamespaceDescriptors()
  for(x<-descriptors){
    println(s"ns: ${x.getName}")
    //依据每一个ns获取其下的table数组并遍历取出
    val descriptors1: Array[HTableDescriptor] = admin.listTableDescriptorsByNamespace(x.getName)
    for(t<-descriptors1){
      println(s"table: s${t.getTableName}")
    }
  }
}
ns: NS3
ns: SYSTEM
table: sSYSTEM:CATALOG
table: sSYSTEM:FUNCTION
table: sSYSTEM:MUTEX
table: sSYSTEM:SEQUENCE
table: sSYSTEM:STATS

这个还有简便写法

object ListTables2 extends App{
  val admin=HbaseUtil.getAdmin
  private val names: Array[TableName] = admin.listTableNames()
  for(x<-names){
    println(x.getNameAsString)
  }
}

修改ns的属性

object AlterNS extends App{
  private val admin: Admin = HbaseUtil.getAdmin
  private val csdn: NamespaceDescriptor = admin.getNamespaceDescriptor("csdn")
  csdn.setConfiguration("author","lisi")
  admin.modifyNamespace(csdn)
  //验证
  private val configuration: util.Map[String, String] = csdn.getConfiguration
  println(configuration)
}
{author=lisi}

删除namespace

object DeleteNS extends App{
HbaseUtil.getAdmin.deleteNamespace("csdn")
}

总结

只要获得一个admin对象,Hbase的scala操作还是比较简单的~

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值