Apache Hive е рамка, която седи на върха на Hadoop за извършване на ad-hoc заявки по данни в Hadoop. Hive поддържа HiveQL, който е подобен на SQL, но не поддържа пълните конструкции на SQL.
Hive покрива заявката HiveQL в програма Java MapReduce и след това я изпраща в клъстера Hadoop. Същият резултат може да се постигне с помощта на HiveQL и Java MapReduce, но използването на Java MapReduce ще изисква много код да бъде написан / отстранен от грешки в сравнение с HiveQL. И така, HiveQL увеличава производителността на разработчиците.
За да обобщим, Hive, чрез езика HiveQL, осигурява абстракция на по-високо ниво над програмирането на Java MapReduce. Както при всяка друга абстракция на високо ниво, има малко по-висока производителност при използване на HiveQL в сравнение с Java MapReduce, но общността Hive работи, за да намали тази празнина за повечето често използвани сценарии.
По същата линия, Pig осигурява абстракция на по-високо ниво над MapReduce. Pig поддържа конструкции PigLatin, които се преобразуват в програмата Java MapReduce и след това се предават в клъстер Hadoop.
Докато HiveQL е декларативен език като SQL, PigLatin е език на потока от данни. Изходът на една конструкция PigLatin може да бъде изпратен като вход към друга конструкция на PigLatin и така нататък.
Преди известно време Cloudera публикува статистически данни за характера на натоварването в типичен клъстер за Hadoop и лесно може да се наблюдава, че задачите на Pig and Hive съставляват добра част от задачите в клъстер Hadoop. Поради по-високата производителност на разработчиците, много компании избират резюмета от по-високо ниво като Pig и Hive. Така че, можем да се обзаложим, че ще има много работни места около Hive и Pig в сравнение с разработката на MapReduce.
Въпреки че книгата Programming Pig е публикувана през октомври 2011 г., книгата за програмиране на кошер е публикувана по-скоро, през октомври 2012 г. За тези, които имат опит в работата с RDBMS, стартирането с Hive би било по-добър вариант от това да започнете с Pig. Също така имайте предвид, че с PigLatin език не е много трудно да започнете.
За основния клъстер Hadoop е прозрачно дали е изпратено задание на Java MapReduce или задача на MapReduce чрез Hive и Pig. Поради партидно ориентирания характер на заданията MapReduce, заданията, подадени чрез Hive и Pig, също са партидно ориентирани.
За изискванията за реагиране в реално време Hive и Pig не отговарят на изискванията поради споменатия по-рано характер на заданията на MapReduce, ориентиран към партиди. Cloudera разработи Impala, която е базирана на Dremel (публикация от Google) за интерактивни ad-hoc заявки на върха на Hadoop. Impala поддържа SQL-подобни заявки и е съвместим с HiveQL. Така че всички приложения, които са изградени върху Hive, трябва да работят с минимални промени с Impala. Основната разлика между Hive и Impala е, че докато HiveQL се преобразува в задания на Java MapReduce, Impala не скрива SQL заявката в Java MapReduce.
Трябва ли да отидете със Прасе или Кошер за конкретно изискване? Това е тема за друг блог.
Препубликувана с разрешение от Praveen Sripati. Оригинална статия може да намерите тук: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html