2013-05-03 4 views
7

Я новичок в Hadoop Hive, и я разрабатываю решение для отчетности. Проблема в том, что производительность запроса очень медленная (улей 0.10, hbase 0.94, hadoop 1.1.1). Один из вопросов:Hadoop Hive медленные запросы

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-е годы). Я знаю, что знаю, соединение находится в поле строки, а не на целочисленном, но наборы данных не большие (около 3300 и 100000 записей). Я пробовал намеки на этот SQL, но это не получилось быстрее. Тот же запрос на MS SQL Server длится 1 с. Также простой счетчик (*) из таблицы длится 7-8 секунд, который шокирует (таблица имеет 3300 записей). Я действительно не знаю, в чем проблема? Любые идеи или я неправильно истолковал Hadoop?

ответ

14

Да .. Вы неверно истолковали Hadoop. Hadoop и Hive также не предназначены для реального времени. Они наиболее подходят для автономной работы с пакетной обработкой. Они вовсе не являются заменой РСУБД. Хотя вы можете сделать тонкую настройку, но «абсолютное реальное время» невозможно. Там много вещей, которые происходят под капотом, когда вы запускаете запрос на улей, который, я думаю, вы не знаете. Прежде всего, запрос Hive преобразуется в соответствующее задание MR, за которым следуют несколько других вещей, таких как сплит-создание, создание записей, создание карт и т. Д. Я бы никогда не предложил Hadoop (или Hive), если у вас есть потребности в реальном времени.

Возможно, вы захотите взглянуть на Impala для ваших потребностей в реальном времени.

+0

Не используйте импали для анализа больших объемов данных. проверьте [это] (https://gigaom.com/2014/01/13/cloudera-says-impala-is-faster-than-hive-which-isnt-saying-much/). Даже текущая версия (0.15) намного быстрее, чем то, что используется в этом блоге. Проверьте [этот блог] (http://hortonworks.com/blog/benchmarking-apache-hive-13-enterprise-hadoop/). – chanchal1987

1

Я не уверен, как новые Вы должны hadoop.Hive не дают результатов при интерактивных скоростях, как небольшая таблица are.In случае вы знали, что это уже и пытаюсь настроить запрос, вы можете попробовать ниже:

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; 

Если вы знаете, что одна из таблиц достаточно мала, чтобы вписаться в память, вы можете попробовать присоединиться к стороне карты.

4

Улей не является подходящим инструментом для работы в режиме реального времени, но если вы хотите использовать инфраструктуру Hadoop в режиме реального времени или в режиме быстрого доступа к данным, взгляните на . Это добавленная стоимость - это быстрый доступ. Не уверен, почему вы выбираете Hadoop для своего решения, но Hbase сидит на вершине HDFS, что некоторым людям нравится из-за присущей избыточности HDFS (вы копируете файл там один раз и автоматически реплицируете), который может быть одним из причины, по которым вы смотрите на Hadoop.

Для получения дополнительной информации: read this question

+0

Прежде всего, спасибо, ребята, за то, что помогли мне :). В настоящее время это является доказательством концепции, поэтому у нас есть небольшой объем данных. Но в реальной жизни у нас будет десятки миллионов строк, поэтому мы решили попробовать Hadoop Hive. А также это бесплатно :). Для целей отчетности я ** нуждаюсь в ** быстрых отчетах (в идеале это будет пара секунд), поэтому я хотел бы использовать что-то быстро (я посмотрю на эту Impala). Вот почему я был удивлен скоростью Hadoop Hive, потому что я ожидал, что он должен быть быстрым, поскольку он предназначен для больших данных. – user2346868

Смежные вопросы