分享

关于hive多级分区和一级分区的疑问

zeus_lhl 发表于 2016-7-30 02:17:02 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 30586
现在需要导入日志数据到hive数据库,两个需求,一个是按小时查询,一个是每天按天查询。日志都是以10分钟作为一个分割点产生的。
hive建表的时候,两种方案:
1. 建立三级分区,(day天,hour小时,min分钟),然后不管是按小时(输入查询条件day,hour),还是按天(输入查询条件day),都是在这个三级分区表里去查;
2. 针对每个分区建表,比如先建立三级分区表,然后建立2级分区表,然后建立一级分区表,不同的需求,到不同的表里去查

哪种方案更好些?
如果是第二种方案,那是不是先建立三级分区表,然后查询出结果,再插入到二级分区表,依次类推?相比,第一种方案有什么劣势吗?
如果是第一种方案,那什么场景下才会直接建立一级分区表呢?

初学,希望大神们不要给个链接草草了事,详细解答,兄弟万分感谢!!!

已有(5)人评论

跳转到指定楼层
hx252502115 发表于 2016-7-30 10:45:52
只是根据理解说说,我也是新手,只是和兄弟探讨:
  先明确本屌倾向于第一种方案,采用三级分区的方式,理由:
  方案一是hive的标准分区方式,所建立的分区在hdfs中只是一个文件目录,不会产生大量的磁盘占用,而方案二是通过三级表的数据产生一个中间结果存入二级表中,依次类推,这些结果都占用了存储(无论是外部表还是普通表),不错这样是可以快速的响应一些需求,另外考虑需求扩展,例如今天从日志中提取广告的点击热度,明天又要求您统计访问用户的地区分布,方案二您得产生多少个中间结果才合适啊。在数据体量很大的情况下,方案二的资源占用上比方案一差,需求响应也没有方案一灵活。

  问题二:需要根据数据的分布做分析,如果一级分区后单个分区的数据量在合适的大小下也可以不进行二级分区,否则一级分区后分区下的数据量非常大会影响作业的效率的

  以上都是我所想到的,可能不一定正确,重在参与,顶兄弟才是主要的,祝工作顺利,HAPPYSIR!
   
回复

使用道具 举报

langke93 发表于 2016-7-30 13:55:06
hive根据了解只有分区表。
对于第二种,楼主的意思是创建外表吗?在查询的时候需要进行表连接。
如果这样的话第一种更好


回复

使用道具 举报

zeus_lhl 发表于 2016-7-30 14:35:58
hx252502115 发表于 2016-7-30 10:45
只是根据理解说说,我也是新手,只是和兄弟探讨:
  先明确本屌倾向于第一种方案,采用三级分区的方式,理 ...

受教!~

回复

使用道具 举报

pergrand 发表于 2016-7-30 17:39:33
hx252502115 发表于 2016-7-30 10:45
只是根据理解说说,我也是新手,只是和兄弟探讨:
  先明确本屌倾向于第一种方案,采用三级分区的方式,理 ...

点一长串赞
回复

使用道具 举报

J20_果农 发表于 2016-8-1 15:16:05
我觉得如果只存放明细数据,那第一种方案最合适。
但是如果你还有需求对明细数据基础上做不同时间粒度的汇总,那肯定要考虑第二种方案。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条