orc表的配置单元rawdatasize

zynd9foi  于 2021-05-31  发布在  Hadoop
关注(0)|答案(0)|浏览(369)

当我们想要得到配置单元表的大小时,我们可以从-

describe formatted hive_table_name

或者我们通过-

hdfs dfs -du -s -h on_hive_table_location

我理解rawdatasize(磁盘中数据的实际空间)
因此,这两种方法都可以正确地知道配置单元中任何表的数据的实际大小,但对于文本格式的配置单元表,这是正确的。
我的问题是针对orc表的rawdatasize,我想知道orc表中使用的数据在压缩前的实际大小,压缩后我们可以得到它描述的标签“totalsize”。
为了测试这一点,我创建了两个配置单元表(两个表都有相同的数据,具有相同的列和相同的行计数)
一个具有文本格式,名称为tbl\u txt
第二个为orc格式,名称为tbl\U orc
但是在这里我不能依赖rawdatasize,让我们看看为什么(对于这个演示,我只是使用了descripe命令中的“table params”):

describe formatted tbl_txt;
Table Parameters:       
    COLUMN_STATS_ACCURATE   {\"BASIC_STATS\":\"true\"}
    numFiles                28                  
    numRows                 1410397373          
    rawDataSize             651007684350        
    totalSize               652418081723        
    transient_lastDdlTime   1593778216          

describe formatted tbl_orc;
Table Parameters:       
    COLUMN_STATS_ACCURATE   {\"BASIC_STATS\":\"true\"}
    numFiles                677                 
    numRows                 1410397373          
    rawDataSize             4499364958261       
    totalSize               10660478155         
    transient_lastDdlTime   1593548689

如我们所知,这两个表都有相同的数据,请检查count(),它们是相同的。
但orc的rawdatasize几乎是文本的7倍。我希望表orc和文本的rawdatasize至少必须相同。即使不是,但这是他们之间的巨大差异。
其他注意事项-我知道对于文本表,rawdatasize和totalsize将是相同的,这意味着hive获取的数据量与磁盘中的实际数据量相同,并且由于orc是hive用于在表中存储hive的压缩方式之一,因此它将比文本小一个很明显但不清楚的是rawdatasize大于的rawdatasize文本表和我完全困惑的地方。
如果有人能帮忙,请解释一下。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题