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. ASP.NET Web API 2 的返回结果

    HttpResponseMessage IHttpActionResult void 某些其他类型 总结归纳 原文地址:https://www.cnblogs.com/xgzh/p/11208611. ...

  2. JPA使用Specification构建动态查询

    封装Specification查询条件,在Spring Data JPA 2.0以前使用 Specifications 这个辅助类来操作where.not.and和or连接,在2.0版本以后这个类会被 ...

  3. 开发技术--Python核心知识A

    开发|Python核心知识A A篇,主要介绍Python基础中列表,元祖,字典,集合,字符串,I/O,条件与循环,异常处理的底层知识与使用的注意事项. 希望大家对于Python会有新的收获,本篇不同于 ...

  4. SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

    SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现 如下STO,是从公司代码SZSP转入CSAS, 如下图示的内向交货单180018660.该内向交货单是在外向交货单8001632 ...

  5. MySQL的select(极客时间学习笔记)

    查询语句 首先, 准备数据, 地址是: https://github.com/cystanford/sql_heros_data, 除了id以外, 24个字段的含义如下: 查询 查询分为单列查询, 多 ...

  6. day 35

    目录 单表操作 分组 group by having order by limit 使用顺序 多表操作 外键 一对多 多对多 一对一 多表联查 单表操作 分组 group by 分组指的是:将所有记录 ...

  7. C语言杂

    atof——把字符串转化成浮点型 C语言标准库 头文件: #include <stdlib.h> 定义函数:double atof(const char *nptr); #include ...

  8. [原创]python+beautifulsoup爬取整个网站的仓库列表与仓库详情

    from bs4 import BeautifulSoup import requests import os def getdepotdetailcontent(title,url):#爬取每个仓库 ...

  9. BeanShell实现加密解密功能

    一,在IDEA中写好加密的脚本 二,然后将整个包文件导出,生成jar包 三,将jar包文件放到jmeter的lib/ext目录下 然后在jmeter的BeanShell中引入该类,调用其中的加密方法 ...

  10. c# 第9节 数据类型之值类型

    本节内容: 1:数据类型是什么 1:数据类型是什么 2:数据类型--值类型 3:值类型和引用类型的区分 画图现象: 3:值类型的种类 整数: 浮点数: 字符: