hbase 查看元数据
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 查看元数据的更多相关文章
- Hadoop NameNode 元数据以及查看元数据的方式
HDFS中NameNode工作机制1.NameNode的主要功能(1)负责客户端请求的响应: (2)负责元数据的管理. 2.元数据管理namenode对数据管理采用了三种存储形式: (1)内存元数据: ...
- Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj ...
- Hbase查看
Client HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC:对于数据读写类操作,Cli ...
- hbase 查看hfile文件
emp表数据结构 hbase(main):098:0> scan 'emp' ROW COLUMN+CELL row1 column=mycf:depart, timestamp=1555846 ...
- kudu 查看元数据信息
package com.lala.lala.pipe.dbinfo import org.apache.kudu.client.KuduClient import com.lala.lala.comm ...
- mysql中,如何查看数据库元数据(metadata)的字符集?
需求描述: mysql中,数据库的元数据也是有字符集的. 操作过程: 1.查看mysql数据库元数据的字符集 mysql> show variables like 'character_set_ ...
- HBase运维基础--元数据逆向修复原理
背景 鉴于上次一篇文章——“云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据”的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等.总的来说,就是想更深层 ...
- HBase相关
hadoop和hbase节点添加和单独重启 有时候hadoop或hbase集群运行时间久了后,某些节点就会失效,这个时候如果不想重启整个集群(这种情况在很多情况下已经不被允许),这个时候可以单独重启失 ...
- 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 ...
随机推荐
- abstract,virtual,override个人
1.abstract 可以修饰类和方法,修饰方法时只声明不实现: 2.继承实现abstract类必须通过override实现abstract声明的方法,而virtual方法可选择override(重写 ...
- 高性能TcpServer(C#) - 1.网络通信协议
高性能TcpServer(C#) - 1.网络通信协议 高性能TcpServer(C#) - 2.创建高性能Socket服务器SocketAsyncEventArgs的实现(IOCP) 高性能TcpS ...
- Python struct与小端存储
参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017685387246080 在使用Python 实现字符向字节数据类型转换的时候,P ...
- python3字符串常用操作练习
练习一下字符串的常用操作 #-*- coding:utf-8 -*- #字符串的常用操作 str = "1111 Hell :wo:rld! " #删除头尾所有指定字符串,默认移除 ...
- 点击除指定区域外的空白处,隐藏div
<script> $(document).click(function (e) { var $target = $(e.target); //点击.zanpl和.quanzipl以外的地方 ...
- ptrace函数深入分析
ptrace函数:进程跟踪. 形式:#include<sys/ptrace.h> Int ptrace(int request,int pid,int addr,int data); 概述 ...
- Modbus协议 CRC 校验码
CRC(循环冗余校验)在线计算 http://www.ip33.com/crc.html 里面的8005的多项式值,但网上看到的算法都是用A001来异或的 ---------------------- ...
- [PHP] 三种运行模式 ISAPI模式 APACHE2HANDLER模式 CGI模式 FastCGI模式
ISAPI模式:ISAPI是微软提供的一套标准,PHP的ISAPI模式意思是PHP在windows系统上的IIS进行配合的运行模式,在PHP5.3之后不再支持,php5isapi.dll文件,PHP进 ...
- Linux命令——ethtool
转自:https://www.cnblogs.com/kelamoyujuzhen/p/10116423.html 参考:9 Linux ethtool Examples to Manipulate ...
- requests---自动写博客
前两天写过一个关于session的博客,session登录过后,可以进行一系列的操作,今天通过模拟登录博客园,自动写博客 自动写博客 我们先理下书写的思路: 1.通过request访问博客园: 2.通 ...