对大量数据进行查询时,Hive在查询时,会转换成mapreduce任务运行,会显得比较慢。可以通过分区来进行速度上的优化。
分区表建立
新建分区表trans.trans201702
从trans.test201702查询出wcode=’000002.SZ’的数据,然后插入trans.trans201702。
在创建分区时,hive会进行mapreduce任务。
查看分区表
删除错误的分区:
查询性能比较
原始查询:
会进行mapreduce任务
分区后:
查询时间相比没有创建分区前大幅缩短。
分区之后基本解决了股票的查询速度缓慢的问题
建议
Hive分区操作就是实际上就是分目录,把一个大的数据集根据业务需要分割成更小的数据集,在这个过程中会创建很多分区的文件夹,如果分区过多,文件夹又太小,不利于发挥hadoop的优势,可能造成性能的损耗。建议将trans数据按照股票代码进行分区。
可以通过修改动态分区大小数目和文件来调整hive支持的分区数量。