hive 分区表select全部数据_hive 查询表数据量大小

为什么要查询表数据量

在做数据仓库管理时,数据导入hive或向表生成数据后形成的数据资产,表里的数据量和占用存储空间是总要的元数据属性。为方便数据使用时对数据有基本的了解,需要对表的数据量做统计。

使用 analyze table 主动生成元数据信息

analyze table tableName [partition(partCol[=‘value‘])] compute statistics;

分区表必须添加partition字段才能执行,执行

使用desc extended tableName 方法

desc extended databaseName.tableName;

使用可以查看非分区表

parameters:{totalSize=126532790,

rawDataSize=125773613,

numRows=759177,

COLUMN_STATS_ACCURATE={"BASIC_STATS":"true"},

numFiles=6,

transient_lastDdlTime=1590736183,

comment=单位基本信息},

使用 show create table tableName 查看

show create table tableName;

......

TBLPROPERTIES (

‘COLUMN_STATS_ACCURATE‘=‘{\"BASIC_STATS\":\"true\"}‘,

‘numFiles‘=‘6‘,

‘numRows‘=‘759177‘,

‘rawDataSize‘=‘125773613‘,

‘totalSize‘=‘126532790‘,

‘transient_lastDdlTime‘=‘1590736183‘)

使用 show create table 也只能查看非分区表.

‘‘‘

show tblproperties tableName("rawDataSize")

可以查看单个属性

‘‘‘

使用 explain select * from tableName

hive> explain select * from tableName;

OK

STAGE DEPENDENCIES:

Stage-0 is a root stage

STAGE PLANS:

Stage: Stage-0

Fetch Operator

limit: -1

Processor Tree:

TableScan

alias: ab01

Statistics: Num rows: 759177 Data size: 125773613 Basic stats: COMPLETE Column stats: NONE

Select Operator

使用explain可以查看分区表和非分区表,但后面带上where条件后结果将不准确或错误。

查hive元数据库

查询元数据需要连接postgres hive库。

通过databaseName和tableName查询表tbl_id

DBS     -- 存储Hive中所有数据库的基本信息

TBLS     -- 存储Hive表、视图、索引表的基本信息

使用tbl_id 查询table_params 数据

使用shell 命令查看表存储文件大小

-- 单位b

hadoop fs -ls /user/hive/warehouse/table_name | awk -F ‘ ‘ ‘{print $5}‘|awk ‘{a+=$1}END {print a}‘

--#查看分区表的容量 单位GB

$ hadoop fs -ls /user/hive/warehouse/table_name/yyyymm=202005 | awk -F ‘ ‘ ‘{print $5}‘|awk ‘{a+=$1}END {print a/(1024*1024*1024)}‘

-- 自动转换单位

hadoop fs -du /user/hive/warehouse/table_name/ | awk ‘{ sum=$1 ;dir2=$2 ; hum[1024**3]="Gb";hum[1024**2]="Mb";hum[1024]="Kb"; for (x=1024**3; x>=1024; x/=1024){ if (sum>=x) { printf "%.2f %s \t %s\n",sum/x,hum[x],dir2;break } }}‘

你可能感兴趣的:(hive,分区表select全部数据)