首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop配置单元慢查询

Hadoop配置单元慢查询
EN

Stack Overflow用户
提问于 2013-05-03 20:49:24
回答 4查看 20.7K关注 0票数 9

我是Hadoop Hive的新手,我正在开发一个报告解决方案。问题是查询性能非常慢(hive 0.10,hbase 0.94,hadoop 1.1.1)。其中一个查询是:

代码语言:javascript
复制
select a.*, b.country, b.city from p_country_town_hotel b 
    inner join p_hotel_rev_agg_period a  on
    (a.key.hotel = b.hotel) where b.hotel = 'AdriaPraha' and a.min_date < '20130701'
    order by a.min_date desc  
    limit 10;

这需要相当长的时间(50秒)。我知道我知道,连接是在字符串字段上,而不是在整数上,但是数据集并不大(CCA3300和100000条记录)。我尝试了关于这个SQL的提示,但没有更快的结果。MS SQL Server上的相同查询持续1秒。此外,表中的简单计数(*)持续7-8秒,这是令人震惊的(表中有3300条记录)。我真的不知道问题出在哪里?有什么想法,还是我曲解了Hadoop?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-03 22:46:12

Yes..you误解了Hadoop。Hadoop和Hive都不是实时的。它们最适合于离线、批处理之类的东西。它们根本不是RDBMS的替代品。虽然你可以做一些微调,但“绝对实时”是不可能的。当你运行一个hive查询时,有很多事情在幕后发生,我想你不是没有意识到。首先,你的Hive查询被转换成相应的MR作业,然后是一些其他的事情,如拆分创建,记录生成,映射器生成等。如果你有实时需求,我永远不会建议Hadoop(或Hive)。

你可能想看看Impala,以满足你的实时需求。

票数 18
EN

Stack Overflow用户

发布于 2013-05-03 23:11:03

Hive不是用于实时作业的合适工具,但是如果您希望利用Hadoop基础设施进行实时或快速数据访问,那么可以看看HBase。它的增值都是关于快速访问。不知道您为什么选择Hadoop作为您的解决方案,但Hbase位于HDFS之上,这是一些人喜欢的,因为HDFS提供了固有的冗余(您只需将文件复制到HDFS上一次,它就会自动复制),这可能是您研究Hadoop的原因之一。

有关更多信息,请访问:read this question

票数 4
EN

Stack Overflow用户

发布于 2013-05-03 21:37:31

我不确定你是不是新手,hadoop.Hive不会以交互速度给你提供结果,如果你已经知道这一点,并试图调整查询,你可以尝试下面的方法:

代码语言:javascript
复制
select a.*, b.country, b.city from
 (select * from p_country_town_hotel where hotel= 'AdriaPraha') b 
 inner join 
 (select * from p_hotel_rev_agg_period where min_date < '20130701') a  
 on
 a.key.hotel = b.hotel
 order by a.min_date desc  
 limit 10;

如果您知道其中一个表足够小,可以放入内存中,那么可以尝试map side join。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16359337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档