如何计算配置单元中一条记录的大小?
Posted
技术标签:
【中文标题】如何计算配置单元中一条记录的大小?【英文标题】:How to calculate size of the one record in hive? 【发布时间】:2021-05-27 15:20:38 【问题描述】:我需要了解我的表将使用多少内存。我知道记录的算术平均值。我知道有哪些类型的记录。但我不明白如何计算记录的平均/最大大小。如果我得到每列记录的平均/最大大小,这是否可以计算出来?
【问题讨论】:
【参考方案1】:获取每列的平均/最大大小
您还可以分析表并获取列的统计信息。
分析表:
ANALYZE TABLE tablename COMPUTE STATISTICS FOR COLUMNS;
使用 DESCRIBE FORMATTED:
desc formatted tablename column_name
它将打印这些数字:
data_type, min, max, num_nulls, distinct_count, avg_col_len, max_col_len, num_trues, num_falses
不幸的是,它一次只适用于单个列,您需要重复描述命令来获取所有列的统计信息。
【讨论】:
【参考方案2】:我可以给你一个蜂巢表中每一行的平均值。可以计算每行的最大/最小大小,但这有点困难。 您可以使用 - 以 KB 为单位的总大小/表格计数来计算平均大小。
show tblproperties tab ("totalSize") ; --result is 1117098374
select 1117098374/(1024*count(*)) row_sz_kb from tab ;
要计算单个行的大小,您需要求和-space consumed by data type of each column * length of the data in the column.
这并不容易,因为不同数据类型占用的空间可能很棘手。 但我在我的系统中看到,如果你在一列中存储 100 个,在同一列中存储 999 个,它们所消耗的空间会有所不同。 您可以按照下面的链接查看每种数据类型消耗的字节数,但我会对它们持保留态度并验证自己。 http://hadooptutorial.info/hive-data-types-examples/
【讨论】:
以上是关于如何计算配置单元中一条记录的大小?的主要内容,如果未能解决你的问题,请参考以下文章