Мое образование - 4 недели в мире Hadoop. Плескавшийся немного в Hive, Pig и Hadoop с помощью Hadoop VM Cloudera. Прочитали газету Google на MapReduce и GFS (ссылка PDF).
Я понимаю это -
Латынь Свиньи языка свиньи является сдвигом от (удовлетворяет способу, которым программисты думают), SQL как декларативный стиль программирования и языка запросов Hive тесно напоминает SQL.
Свинья сидит сверху Hadoop и в принципе может также сидеть сверху Дриады. Я мог бы быть неправым, но Hive тесно связан с Hadoop.
И латинский Свиньи и Hive управляют, чтобы компиляции Отобразили и Уменьшили задания.
Мой вопрос - Что является целью наличия обоих, когда один (говорят, что Свинья), мог служить цели. Это просто, потому что Свинье проповедуют христианство Yahoo! и Hive Facebook?
Я считаю, что настоящий ответ на ваш вопрос состоит в том, что они являются / были независимыми проектами и не было централизованно согласованной цели. Вначале они находились в разных сферах и со временем пересекались по мере расширения обоих проектов.
Перефразировано из книги Hadoop O'Reilly:
Pig: язык потока данных и среда для изучения очень больших наборы данных.
Улей: распределенное хранилище данных
Вы можете достичь аналогичных результатов с помощью запросов pig/hive. Основное различие заключается в подходе к пониманию/написанию/созданию запросов.
Pig стремится создать поток данных: небольшие шаги, на каждом из которых вы выполняете определенную обработку
.
Hive дает вам SQL-подобный язык для работы с данными, поэтому преобразование из RDBMS намного проще (Pig может быть проще для тех, кто не имел опыта работы с SQL)
Стоит также отметить, что для Hive вы можете использовать хороший интерфейс для работы с данными (Beeswax для HUE или веб-интерфейс Hive), а также метахранилище для информации о ваших данных (схема и т.д.), которое полезно в качестве центральной информации о ваших данных.
Я использую и Hive, и Pig, для разных запросов (я использую тот из них, где я могу написать запрос быстрее/проще, я делаю так в основном специальные запросы) - они могут использовать одни и те же данные в качестве входных. Но в настоящее время я делаю большую часть своей работы через Beeswax.
Посмотрите этот пост от Алана Гейтса, архитектора Pig в Yahoo!, который сравнивает, когда лучше использовать SQL, например Hive, а не Pig. Он очень убедительно доказывает полезность процедурного языка, такого как Pig (по сравнению с декларативным SQL), и его полезность для разработчиков потоков данных.
Hive был разработан для сообщества, привыкшего к SQL. Его философия заключалась в том, что нам не нужен еще один язык сценариев. Hive поддерживает сценарии преобразования преобразования и преобразования на языке по выбору пользователя (которые могут быть встроены в предложения SQL). Он широко используется в Facebook аналитиками, знакомыми с SQL, а также разработчиками данных, программирующими на Python. От усилий по совместимости SQL в Pig отказались, AFAIK, поэтому разница между двумя проектами очень очевидна.
Поддержка синтаксиса SQL также означает возможность интеграции с существующими инструментами бизнес-аналитики, такими как Microstrategy. У Hive есть драйвер ODBC / JDBC (работа над ним продолжается), который должен позволить это сделать в ближайшем будущем. Он также начинает добавлять поддержку индексов, которые должны обеспечивать поддержку запросов детализации, распространенных в таких средах.
Наконец - это не имеет прямого отношения к вопросу - Hive - это среда для выполнения аналитических запросов. Хотя в основном он используется для запросов к плоским файлам, нет причин, по которым он не может запрашивать другие магазины. В настоящее время Hive можно использовать для запроса данных, хранящихся в Hbase (который представляет собой хранилище ключей и значений, подобное тем, которые находятся во внутренностях большинства СУБД), а проект HadoopDB использовал Hive для запроса уровня федеративной СУБД.