首页 > 数据库技术 > 详细

HIVE和SPARKSQL计算引擎在TEXT导入PARQUET格式的HIVE存储引擎分片数量机制

时间:2016-03-26 08:28:35      阅读:1959      评论:0      收藏:0      [点我收藏+]

表的hive导入:

create table XXXXXXX201512 (N多字段构成)STORED AS PARQUETFILE;

insert into XXXXXXX201512 select * from XXXXXXX20151231;


以上的insert,3000万的数据,一般是6、7分钟的样子,,一个表到总表产生的分片数是40多个,之后查询一张表大概1秒左右

别用Spark-SQL进行以上的插入过程,原因如下:

测试用sparksql来导入:

create table XXXXXXX201512P (N多字段构成)STORED AS PARQUETFILE;

insert into XXXXXXX201512P select * from XXXXXXX20151231;

以上的insert,3000万的数据,超过了10分钟,一个表到总表产生的分片数是80多个,查询1.5秒左右


从文件数论证hive和sparksql对以上过程的分片机制:

得出结论:hive的上述过程是按照block的进行两两合并,然后压缩成为parquet文件的;sparksql是按照每个block压缩成为parquet文件的,同时,sparksql把空part也会算一个进行压缩!!!

原表的数据:

技术分享技术分享

part0,65个block;part1,0个block;part2,11个block;part3,0个block;part4,4个block;

block数量一共是80个,而hive产生的总表中由这个表过去的数据的part数量是40个!!!sparkSQL产生的总表中由这个表过去的数据的part数量是82个!!!

由此可以看出,在进行上述操作的时候,hive至少比spark还是优化了一点的。

具体是不是我说的两两合并,有待看源码验证!!!


我个人觉得更加高端的方式是计算压缩率,通过压缩率和数据量大小,选择合适的block合并数据压缩,使数据尽量能达到每个block 128M的满负荷,这样分片数可以减少,再超大数据规模下,效率更高!!!

当然这个在代码实现或者算法上应该比较难以实现,要不然以那些世界级的专业人士,怎么会想不到我说的这段话。。。


本文出自 “一枝花傲寒” 博客,谢绝转载!

HIVE和SPARKSQL计算引擎在TEXT导入PARQUET格式的HIVE存储引擎分片数量机制

原文:http://feiweihy.blog.51cto.com/6389397/1755227

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!