统计Azure存储的HBase各表数据量
场景:HBase存储在Azure上,现在通过访问Azure Storage的接口,获取HBase中各个表的数据量。
注意:
1、Azure存储,默认的副本数为2,即共存3份,但只收1份的费用,取到的size也是1份的大小。如果是自建HDFS,则不同。
2、此处访问的是Azure Storage的接口,还可以访问HBase的接口来获取数据量(另行验证)。
c#代码:
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
public class HBaseResourceFetcher
{ private CloudBlobContainer blobContainer; public HBaseResourceFetcher()
{
StorageCredentials storageCred = new StorageCredentials(
AppConfigGetter.Get(ConfigConstants.KEY_STORAGEACCOUNTNAME),
AppConfigGetter.Get(ConfigConstants.KEY_STORAGEACCOUNTKEY));
CloudStorageAccount storageAccount = new CloudStorageAccount(storageCred,
AppConfigGetter.Get(ConfigConstants.KEY_ENDPOINTSUFFIX), true);
var blobClient = storageAccount.CreateCloudBlobClient();
this.blobContainer = blobClient.GetContainerReference(
AppConfigGetter.Get(ConfigConstants.KEY_STORAGECONTAINERNAME));
} public Dictionary<string, ResourceEntity> GetHBaseTableSizeInfo()
{
Dictionary<string, ResourceEntity> result = new Dictionary<string, ResourceEntity>();
CloudBlobDirectory directory = this.blobContainer.GetDirectoryReference("hbase/data/default");
if (directory == null)
return result; var items = directory.ListBlobs();
foreach (var item in items)
{
if (item is CloudBlobDirectory)
{
var dir = item as CloudBlobDirectory;
string key = dir.Prefix.Replace("hbase/data/default/", "").Replace("/", "");
if (result.ContainsKey(key)) continue;
result.Add(key, new ResourceEntity() {
Type = ResourceType.HBase,
TableName=key,
CopiesNum=,//Azure存储,HDFS默认的副本数为2,即共存3份,但只收1份的费用,故此处记为0
Size_B = GetFileSizeByBlobPath(dir.Prefix)//Azure存储,HDFS默认的副本数为2,即共存3份,但只收1份的费用,此处取到的size也是1份的大小
});
}
}
return result;
} public long GetFileSizeByBlobPath(string directoryPath)
{
CloudBlobDirectory directory = this.blobContainer.GetDirectoryReference(directoryPath);
if (directory == null)
return ;
var items = directory.ListBlobs(true, BlobListingDetails.All).Where(item => (item as CloudBlockBlob).Properties.Length > );
long size = ;
foreach (var item in items)
{
var tmp = (item as CloudBlockBlob);
if (tmp.Name.Contains(".regioninfo") || tmp.Name.Contains(".tableinfo") || tmp.Name.Contains("recovered.edits")) continue;
string[] guid = tmp.Name.Replace(directoryPath, "").Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
size += tmp.Properties.Length;
}
return size;
}
}
统计Azure存储的HBase各表数据量的更多相关文章
- 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- sql server编写通用脚本自动统计各表数据量心得
工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zha ...
- HBase协处理器统计表数据量
1.Java代码实现 import org.apache.hadoop.hbase.client.coprocessor.AggregationClient; import org.apache.ha ...
- SOME:收缩数据库日志文件,查看表数据量和空间占用,查看表结构索引修改时间
---收缩数据库日志文件 USE [master]ALTER DATABASE yourdatabasename SET RECOVERY SIMPLE WITH NO_WAITALTER DATAB ...
- 表数据量影响MySQL索引选择
现象 新建了一张员工表,插入了少量数据,索引中所有的字段均在where条件出现时,正确走到了idx_nap索引,但是where出现部分自左开始的索引时,却进行全表扫描,与MySQL官方所说的最左匹配原 ...
- [源码分享] HIVE表数据量统计&邮件
概要: 计算HIVE BI库下每天数据表总大小及增量 输出: 总大小:xxxG 日同比新增数据量:xxxG 周同比新增数据量:xxxG 月同比新增数据量:xxxG 总表数:xxx 日新增表数:xxx ...
- MySQL单表数据量过千万,采坑优化记录,完美解决方案
问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...
- HBase 清空表数据
public int clearTableByTableName(String tableName) throws Exception { logger.debug("======InitH ...
- sql sever 查询用户所有的表和各个表数据量
和oracle有区别, 需要关联表 SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id WHERE A ...
随机推荐
- Invoke 和 BeginInvoke 的区别
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dot ...
- 在pom.xml中添加Spring依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- DDD Quickly - 读书笔记
读后感:关于领域驱动设计,过去多多少少用到一些.所以,这本精简版看起来很快,很多概念很熟悉,它帮助我把散乱的知识串起来.最后,Eric Evans谈到一点,本来软件的发展是向着处理复杂的业务逻辑走的, ...
- 【学习笔记】--- 老男孩学Python,day8 知识点补充 join,列表不能循环删除,深浅copy
1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串 2. 列表不能再循环的时候删除. 因为索引会跟着改变 3. 字典也不能直接循环删除. 把要删除的内容记录在列表中. ...
- :after伪类+content内容生成经典应用举例——张鑫旭
一.简单说说content内容生成 content内容生成就是通过content属性生成内容,content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容. ...
- python中深浅拷贝
python的复制,深拷贝和浅拷贝的区别 在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一 ...
- mysql + excel 校正线上数据
积分问题处理 1. 所有应补汇总 select driver_id, SUM(integral) from detail_score group by driver_id; 2. 原汇总积分 sele ...
- Spring框架学习之概述
一.什么是软件框架 打个比方就像建筑的混凝土框架,搭好了架子,工人只需要把墙填上. .特点: -半成品 -封装了特定的处理流程和控制逻辑 -成熟的,不断升级改造的软件 .框架和类库的区别 -框架一般是 ...
- Transformation functionality for the String class
String类的转换功能: package com.itheima_05; /* * String类的转换功能: * char[] toCharArray():把字符串转换为字符数组 * String ...
- JSON学习笔记-3
JSON 对象 1.对象语法 JSON 对象使用在大括号({})中书写. 对象可以包含多个 key/value(键/值)对. key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串 ...