之前做项目用的hive,本来功能什么的都好了,但是测试的时候不知道王里面加了多少数据,可能有5000W条,一张表。
然后我现在用select * from tablename,或者select count(1) from tablename,根本就没有反映,一直在loding
用select * from tablename limit 1,1,就可以出来结果
请问这是杂回事情,怎么优化?是不是内存不足???
求帮忙,今天我一定得解决这个问题阿
我是用java 的jdbc来操作的,换到beeline上执行也是一样,一直loading
select *
是将所有数据load到内存,5000万数据量还是比较大的,加载到内存都是一个比较漫长的过程了。你可以试一下在该表建分区。查询的时候建议指定分区,或者像select * from tablename limit 1,1
这样做分页,并且建议用where条件过滤出需要的数据(如果有过滤条件的情况下),尽量避免全表查询。
表上有主键吗? 没有的话加个主键, 然后在试试.
1.表是否压缩
2.在命令行测试了吗
做分区的时候建议按照平台对该表的查询需求来选择分区的类型和粒度