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. vue中使用axios进行ajax请求数据(跨域配置)

    npm安装axios npm install axios --save 引入axios import axios from 'axios' 使用axios mounted () { this.getH ...

  2. 渗透常见linux命令

    在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的 ...

  3. APS系统生产流转方式和批量算法研究

    01.前言 在经济领域,生产型企业是经济的根基,有了生产型企业生产出的各种产品,才有物流.网上购物和金融融资等活动.对于生产型企业,其制造能力是其核心竞争力.如何提升制造能力一直是生产型企业面临的课题 ...

  4. 获得用户的真实ip HTTP_X_FORWARDED_FOR

    工作中经常会有有获得用户真实ip的情况,HTTP_X_FORWARDED_FOR总是忘记,所以我这里记录下来吧. 在PHP 中使用 [“REMOTE_ADDR”] 来取得客户端的 IP 地址,但如果客 ...

  5. c# 拉姆达表达式实现List去重

    c# 拉姆达表达式实现List去重 var list = studentlist.OrderByDescending(a => a.CreateDate).ToList(); Console.W ...

  6. 基于图的异常检测(三):GraphRAD

    基于图的异常检测(三):GraphRAD 风浪 一个快乐的数据玩家/风控/图挖掘 24 人赞同了该文章 论文:<GraphRAD: A Graph-based Risky Account Det ...

  7. 很不错的python 机器学习资源

    http://www.cuijiahua.com/resource.html 曾看过的书,感觉一些很有用的学习资料,推荐给大家! Python基础: 网络教程推荐: 系统学习python3可以看廖雪峰 ...

  8. Python Treelib 多叉树 数据结构 中文使用帮助文档

    树,对于计算机编程语言来说是一个重要的数据结构.它具有广泛的应用,比如文件系统的分层数据结构和机器学习中的一些算法.这里创建了treelib来提供Python中树数据结构的高效实现. 官方文档:htt ...

  9. 201871010112-梁丽珍《面向对象程序设计(java)》第十五周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  10. xposed+justtrustme

    1.xposed下载: https://repo.xposed.info/module/de.robv.android.xposed.installer https://forum.xda-devel ...