分享

hive表有一千万条数据,查询根本没反应

mjjian0 发表于 2015-4-2 10:46:38 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 12 126845
storm到hive  demo做完了,但是需要查询的时候一直没有反应,如果说是集群有其他任务占用着资源,但是我用hadoop job -list看了 没有其他的
只有这一个任务
5.png

这是我的建表语句:

1.png

以下是我用select * from tb_watchmen  where trace_date='2015-03-30 01:43:59' limit 60;查询出的数据,很快的。
2.png

但是我要用order by  就不行了,就卡死了
3.png

看日志也没报异常  只是有个警告:

4.png

已有(13)人评论

跳转到指定楼层
desehawk 发表于 2015-4-2 11:08:36
Order by 实现全局排序,一个reduce实现,效率低
Sort by 实现部分有序,单个reduce输出的结果是有序的,效率高,通常和DISTRIBUTE BY关键字一起使用(DISTRIBUTE BY关键字 可以指定map 到 reduce端的分发key)

可以尝试下面方法:
CLUSTER BY trace_id

DISTRIBUTE BY trace_id SORT BY trace_id


上面是其中一个优化方面,可以尝试对hive进行优化。
或则看看impala

回复

使用道具 举报

mjjian0 发表于 2015-4-2 11:21:35
desehawk 发表于 2015-4-2 11:08
Order by 实现全局排序,一个reduce实现,效率低
Sort by 实现部分有序,单个reduce输出的结果是有序的, ...

看了日志 没有了刚才的那个警告: 7.png
但仍然没反应。如果说是语句问题,但是这个sql也很简单啊。
回复

使用道具 举报

bioger_hit 发表于 2015-4-2 12:10:45
mjjian0 发表于 2015-4-2 11:21
看了日志 没有了刚才的那个警告:
但仍然没反应。如果说是语句问题,但是这个sql也很简单啊。

map和reduce个数都是怎么设置的

回复

使用道具 举报

langke93 发表于 2015-4-2 12:24:23
这里面还是比较复杂的
取决于存储是否有小文件,还 有map和reduce的个数设置等

map个数控制可以通过下面方式控制:
  1. set mapred.max.split.size=100000000;
  2.                     set mapred.min.split.size.per.node=100000000;
  3.                     set mapred.min.split.size.per.rack=100000000;
  4.                     set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
复制代码


reduce个数控制
1.    调整reduce个数方法一:
调整hive.exec.reducers.bytes.per.reducer参数的值;
set hive.exec.reducers.bytes.per.reducer=500000000; (500M)
select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt; 这次有20个reduce

2.    调整reduce个数方法二;
set mapred.reduce.tasks = 15;
select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt;这次有15个reduce

回复

使用道具 举报

mjjian0 发表于 2015-4-2 12:50:59
langke93 发表于 2015-4-2 12:24
这里面还是比较复杂的
取决于存储是否有小文件,还 有map和reduce的个数设置等

我重新见了张表,在这张表里存了 60条数据,用那条语句查,也是很慢的
回复

使用道具 举报

mjjian0 发表于 2015-4-2 12:51:33
desehawk 发表于 2015-4-2 11:08
Order by 实现全局排序,一个reduce实现,效率低
Sort by 实现部分有序,单个reduce输出的结果是有序的, ...

我重新见了张表,在这张表里存了 60条数据,用那条语句查,也是卡在那不动了。
回复

使用道具 举报

langke93 发表于 2015-4-2 13:16:06
mjjian0 发表于 2015-4-2 12:51
我重新见了张表,在这张表里存了 60条数据,用那条语句查,也是卡在那不动了。
hive适合统计,查询可以使用hbase,各有各的用处。如果想hive更快一些,还可以对他们建立索引
详细参考
Hive如何创建索引
回复

使用道具 举报

mjjian0 发表于 2015-4-2 13:45:40
我把RM节点移到namenode节点上,再启动就好了。是rm,nm没有启动起来或是后来挂掉了,因为我在stop-all.SH的时候,提示说没有nm,rm进程。
回复

使用道具 举报

langke93 发表于 2015-4-2 13:51:49
mjjian0 发表于 2015-4-2 13:45
我把RM节点移到namenode节点上,再启动就好了。是rm,nm没有启动起来或是后来挂掉了,因为我在stop-all.SH ...

那就是内存不够了
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条