如何计算配置单元中一条记录的大小?

问题描述

我需要了解我的表将使用多少内存。我知道记录的算术平均值。我知道有哪些类型的记录。但我无法理解如何计算记录的平均/最大大小。如果我获得每列记录的平均/最大大小,是否可以计算它?

解决方法

获取每列的平均/最大大小

您还可以分析表格并获取列的统计信息。

分析表:

ANALYZE TABLE tablename COMPUTE STATISTICS FOR COLUMNS;

使用描述格式:

desc formatted  tablename  column_name

它将打印这些数字:

data_type,min,max,num_nulls,distinct_count,avg_col_len,max_col_len,num_trues,num_falses

不幸的是,它一次只适用于一列,您需要重复 describe 命令来获取所有列的统计信息。

,

我可以给你一个蜂巢表中每一行的平均值(平均值)。可以计算每行的最大/最小大小,但有点困难。
您可以使用 - 总大小(以 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/