package com.jason.lala.pipe.dbinfo

import com.jason.lala.common.query.option.HbaseOptions
import org.apache.hadoop.hbase.{CellUtil, HBaseConfiguration, TableName}
import org.apache.hadoop.hbase.client.{Connection, ConnectionFactory, HTable, Scan}
import org.apache.hadoop.hbase.filter.PageFilter
import org.apache.hadoop.hbase.util.Bytes class HbaseShow(private val map: Map[String, String]) {
private val con = HbaseShow.getCon
private val hBaseAdmin = con.getAdmin
private val nameSpace = map.getOrElse(HbaseOptions.NAMESPACE, "")
private val tbl = map.getOrElse(HbaseOptions.TBL, "")
private val cf = map.getOrElse(HbaseOptions.CF, "")
private val hbaseTable = s"${nameSpace}:${tbl}" /**
* 获取hbase 中的namespaces
*
* @return
*/
def getNamespaces: String = {
val tableNames = hBaseAdmin.listTableNames
val arrString = for {
tableName <- tableNames
arr = tableName.getNameAsString.split(":", )
} yield {
arr()
}
arrString.toSet.mkString(",")
} /**
* 获取对应namespace 下的tablenames
*
* @return
*/
def getTableNames(): String = {
val tableNames = hBaseAdmin.listTableNames
val arrString = for {
tableName <- tableNames
arr = tableName.getNameAsString.split(":", )
if arr() == nameSpace
} yield {
arr()
}
arrString.mkString(",")
} def getColumnsWithCF(): String = getColumnsWithCF().mkString(",") def getColumns(): String = getColumns().mkString(",") /**
* namespace:colname,namespace2:colname2
*
* @param limitScan
* @return
*/
private def getColumnsWithCF(limitScan: Int): Array[String] = {
val columnList = scala.collection.mutable.TreeSet[String]()
//val hTable = new HTable(hBaseConfiguration, hbaseTable)
val hTable = con.getTable(TableName.valueOf(hbaseTable))
val scan = new Scan
scan.setFilter(new PageFilter(limitScan))
val results = hTable.getScanner(scan)
import scala.collection.JavaConversions._ //========================
for (result <- results) {
for (cell <- result.listCells()) {
val family = Bytes.toString(CellUtil.cloneFamily(cell))
val qualifier = Bytes.toString(CellUtil.cloneQualifier(cell))
columnList.add(s"$family:$qualifier")
}
} //========================
Array("rowkey:key1") ++ (columnList.toArray[String])
} /**
* colname,colname2...
*
* @param limitScan
* @return
*/
private def getColumns(limitScan: Int): Array[String] = {
val columnList = getColumnsWithCF(limitScan)
val list = columnList.filter {
s =>
val arr = s.split(":", )
arr() == cf
}.map(_.split(":", )())
list
} def getCfs(): String = {
val htd = hBaseAdmin.getTableDescriptor(TableName.valueOf(hbaseTable))
val cfs = for (cf <- htd.getColumnFamilies) yield {
cf.getNameAsString
}
cfs.mkString(",")
} /**
*
* @param limitScan
* @return
*/
def getSampleData(limitScan: Long = DBShow.Num): String = {
val hTable = con.getTable(TableName.valueOf(hbaseTable))
val scan = new Scan
scan.setFilter(new PageFilter(limitScan))
val results = hTable.getScanner(scan)
import scala.collection.JavaConversions._
val sample = for {
result <- results
cell <- result.listCells()
} yield {
//取行健
val rowKey = Bytes.toString(CellUtil.cloneRow(cell));
//取到时间戳
val timestamp = cell.getTimestamp();
//取到族列
val family = Bytes.toString(CellUtil.cloneFamily(cell));
//取到修饰名
val qualifier = Bytes.toString(CellUtil.cloneQualifier(cell));
//取到值
val value = Bytes.toString(CellUtil.cloneValue(cell));
//stu1 column=course:english, timestamp=1544063446429, value=90
s"$rowKey, column=$family:$qualifier, timestamp=$timestamp, value=${value}" }
sample.mkString("\n")
} } object HbaseShow {
private var conn: Connection = null def getCon: Connection = {
if (conn == null) {
val hBaseConfiguration = HBaseConfiguration.create()
conn = ConnectionFactory.createConnection(hBaseConfiguration)
}
conn
}
}

hbase 查看元数据的更多相关文章

  1. Hadoop NameNode 元数据以及查看元数据的方式

    HDFS中NameNode工作机制1.NameNode的主要功能(1)负责客户端请求的响应: (2)负责元数据的管理. 2.元数据管理namenode对数据管理采用了三种存储形式: (1)内存元数据: ...

  2. Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj ...

  3. Hbase查看

    Client HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC:对于数据读写类操作,Cli ...

  4. hbase 查看hfile文件

    emp表数据结构 hbase(main):098:0> scan 'emp' ROW COLUMN+CELL row1 column=mycf:depart, timestamp=1555846 ...

  5. kudu 查看元数据信息

    package com.lala.lala.pipe.dbinfo import org.apache.kudu.client.KuduClient import com.lala.lala.comm ...

  6. mysql中,如何查看数据库元数据(metadata)的字符集?

    需求描述: mysql中,数据库的元数据也是有字符集的. 操作过程: 1.查看mysql数据库元数据的字符集 mysql> show variables like 'character_set_ ...

  7. HBase运维基础--元数据逆向修复原理

    背景 鉴于上次一篇文章——“云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据”的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等.总的来说,就是想更深层 ...

  8. HBase相关

    hadoop和hbase节点添加和单独重启 有时候hadoop或hbase集群运行时间久了后,某些节点就会失效,这个时候如果不想重启整个集群(这种情况在很多情况下已经不被允许),这个时候可以单独重启失 ...

  9. apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程

    1 软件环境: VMware8.0 Ubuntu-12.10-desktop-i386 jdk-7u40-linux-i586.tar.gz hadoop-1.2.1.tar.gz eclipse-d ...

随机推荐

  1. ADFS登录界面自定义

    最近在做identityServer3+ADFS 实现域账号第三方授权验证,发现一个问题,在我们网站跳转到域账户登录页面,这个页面有点不美观,那么我们改如何自定义这个登录界面呢? ADFS安装配置这里 ...

  2. 阿里Jvm必问面试题及答案

    什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被设计 ...

  3. STP生成树理解

    1.STP的功能 a. 防止二层环路    b .实现网络冗余备份 2.STP的选择机制 目的:  确定阻塞的端口 STP 交换机的角色: 根交换机,非根交换机 STP的选票:     BPDU Ro ...

  4. Error: Opening Robot Framework log failed on mac jenkins

    For resolve your problem you must : Connect on your jenkins url (http://[IP]:8080/) Click on Manage ...

  5. vue-router 在项目中的使用

    一.下载vue-router npm install vue-router --save 二.编码 1.在项目中新建文件夹 router/index.js /* * 路由对象模块 * */ impor ...

  6. [TCP/IP] TCP第三次握手失败怎么办

    三次握手 客户端 ==> SYN是1同步 ,ACK确认标志是0,seq序号是x ==> 服务器 客户端 <== SYN是1同步 ,ACK确认标志是1,seq序号是y,ack确认号是x ...

  7. 001-k8s集群的安装

    k8s集群的安装 1.实验描述 通过搭建 K8S 的集群,来学习对容器的编排 2.实验环境 [你可能需要][CentOS 7 搭建模板机]点我快速打开文章 [你可能需要][VMware 从模板机快速克 ...

  8. C语言的10大基础算法

    C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...

  9. SSI注入--嵌入HTML页面中的指令,类似jsp、asp对现有HTML页面增加动态生成内容,见后面例子

    SSI注入漏洞总结 from:https://www.mi1k7ea.com/2019/09/28/SSI%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E6%80%BB%E ...

  10. Portainer

    docker search portainer docker pull portainer/portainer docker run -it \ --name prtainer \ -p 9000:9 ...