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 ...
随机推荐
- C# SmtpClient 发邮件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- C# 方法默认访问级别 : private C# 类默认访问级别 : internal
C# 方法默认访问级别 : private C# 类默认访问级别 : internalpublic:访问不受限制.protected:访问仅限于包含类或从包含类派生的类型.Internal:访问仅限于 ...
- 练手WPF(三)——扫雷小游戏的简易实现(中)
八.随机布雷 /// <summary> /// 随机布地雷 /// </summary> /// <param name="mineNum"> ...
- c#之添加window服务(定时任务)
本文讲述使用window服务创建定时任务 1.如图,新建项目,windows桌面->windows服务 2.如图,右键,添加安装程序 3.在下图安装程序 serviceInstaller1 上右 ...
- C# - VS2019WinFrm桌面应用程序FtpClient实现
前言 本篇主要记录:VS2019 WinFrm桌面应用程序实现简单的FtpClient,包含Ftp文件查看.上传和下载等功能. 准备工作 搭建WinFrm前台界面 添加必要的控件,这里主要应用到Gro ...
- PyTestReport 自动化报告
安装 pip install PyTestReport pytest框架执行命令 pytest.main(["-s", "test_login.py", &qu ...
- RT-Thread点亮led
下载默认工程 https://www.rt-thread.org/ 配置rtconfig.h #define STM32F103RE //修改成自己的板子 #define RT_HSE_VALUE 8 ...
- FMDB的操作
#import "ZYDataManager.h" #import "JSSportModel.h" FMDatabase *db = nil; @implem ...
- xcodeinstruments 内存检测
http://blog.csdn.net/totogo2010/article/details/8233565
- Hadoop 从节点的 NodeManager 无法启动
一.问题描述 日志文件信息如下: -- ::, INFO nodemanager.NodeManager (LogAdapter.java:info()) - registered UNIX sign ...