快速了解Hive的元数据信息的方式
方式1:通过desc formatted
。
通过
desc formatted tablename来查看
下面是更完整的
DESC FORMATTED
结果的解读,包括了常见的参数:Table Information:
Table Type: 表的类型,通常是 MANAGED_TABLE(受控表)或 EXTERNAL_TABLE(外部表)。
Table Parameters: 表的参数,这些参数可以包含用户自定义的配置信息。
Storage Information:
InputFormat: 表的输入格式。
OutputFormat: 表的输出格式。
Storage Desc Params: 存储描述参数,包括压缩格式、存储格式等。
SerDe Library: 表使用的序列化/反序列化库。
Partition Information:
Partition Information: 如果表有分区,这里会列出分区的详细信息。
Detailed Table Information:
Database: 表所属的数据库。
Table Name: 表的名称。
Owner: 表的所有者。
CreateTime: 表的创建时间。
Last Access Time: 表的最后访问时间。
Retention: 数据的保留时间。
Location: 表的存储位置。
Columns Information:
Name: 列名。
Type: 列的数据类型。
Comment: 列的注释。
Bucket Information:
Bucket Columns: 如果表是分桶表,这里会列出分桶的列。
Sort Columns: 如果表有排序列,这里会列出排序的列。
Num Buckets: 表的分桶数。
Table Parameters:
Total Number of Rows: 表中的总行数。
numFiles: 表的文件数。
numRows: 表的行数。
rawDataSize: 表的原始数据大小。
totalSize: 表的总大小。
transcient_lastDdlTime: 表的最后修改时间。
Stats: 表的统计信息。
external: 如果是外部表,则为
TRUE
,否则为FALSE
。comment: 表的注释。
numPartitions: 表的分区数。
Partitions Information:
Partition Information: 如果表有分区,这里会列出分区的详细信息。
Detailed File Information:
Number of Input Files: 输入文件的数量。
Number of Output Files: 输出文件的数量。
Total Size: 文件总大小。
对于单位,主要需要注意的是:
文件大小、表大小、数据大小: 以字节为单位。
行数: 个数。
时间戳: 通常是 Unix 时间戳,表示从 1970 年 1 月 1 日 UTC 时间开始的秒数。
方式2:查询Hive元数据。
查询元数据
SELECT tbl_name, sum(case when param_key='numRows' then param_value else 0 end) '表的行数', sum(case when param_key='numRows' then 1 else 0 end) '表的分区数' , sum(case when param_key='totalSize' then param_value else 0 end)/ 1024/1024/1024 '数据量GB', sum(case when param_key='numFiles' then param_value else 0 end) '文件数' FROM hive_meta.PARTITIONS pt inner join PARTITION_PARAMS ptp on pt.PART_ID=ptp.PART_ID inner join hive_meta.TBLS tbl on pt.TBL_ID= tbl.TBL_ID ---owner,表的拥有者 where tbl_name in ('表名') and owner='虚拟用户' group by tbl_name
通过如下命令手动收集表或者分区来统计信息:anaylze table表名partition(分区列)compute statistics。