Різниця між свинею та вуликом? Чому обоє? [зачинено]


256

Моє передісторія - 4 тижні в світі Hadoop. Трохи попробовували у вулику, свині та гадопі, використовуючи Hudeop VM Cloudera. Прочитали статті Google про зменшення карт та GFS ( посилання PDF ).

Я розумію, що-

  • Мова свиней Латинська свиня - це перехід від (підходить тому, як думають програмісти) SQL, як декларативний стиль програмування, а мова запитів Hive дуже нагадує SQL.

  • Свиня сидить на вершині Hadoop і, в принципі, також може сидіти на вершині Дріади. Я можу помилятися, але вулик тісно пов'язаний з Хадоопом.

  • Обидві команди Pig Latin і Hive компілюються для картографування та скорочення завдань.

Моє запитання - Яка мета мати обох, коли одна (скажімо, Свиня) могла служити меті. Це лише тому, що Свиня євангелізується Yahoo! та Hive від Facebook?


24
Вулик призначений для структурованих даних. Свиня призначена для неструктурованих даних.
Мертвий програміст

Відповіді:


151

Ознайомтеся з цією публікацією від Алана Гейтса, архітектора Свиней у Yahoo !, який порівнює, коли б використовувався такий SQL, як вулик, а не свиня. Він робить дуже переконливий випадок щодо корисності такої процедурної мови, як Pig (проти декларативного SQL) та її корисності для дизайнерів потоків даних.


Алан також робить статтю, де конкретно обговорюють Hive, як вона поділилася j03m нижче. Гарні речі від нього!
Dolan Antenucci

14
Вулик призначений для структурованих даних. Свиня призначена для неструктурованих даних.
Мертвий програміст

7
Я збентежений. Ви хотіли сказати "[...] корисність процедурної мови, як Свиня"? Тому що у статті неодноразово стверджується, що "Латинська свиня є процедурною".
Метт Фенвік

4
Я не впевнений, чи це тимчасово, але статтю, здається, немає. Чи можете ви оновити посилання (я не міг знайти його за допомогою швидкого пошуку)?
Пітер Кліпфель

1
Повідомлення Алана Гейтса тут .. будь ласка, перегляньте його .. developer.yahoo.com/blogs/hadoop/…
Mr.Chowdary

57

Hive був розроблений так, щоб звернутися до спільноти, зручної для SQL. Його філософія полягала в тому, що нам не потрібна ще одна сценарна мова. Hive підтримує карту та зменшує сценарії перетворення мовою на вибір користувача (яка може бути вбудована в SQL-пропозиції). Він широко використовується у Facebook як аналітиків, зручних для SQL, так і програмістів шахтарів, що програмують в Python. Зусилля щодо сумісності SQL у Pig були відмовлені від AFAIK - тому різниця між двома проектами дуже очевидна.

Підтримка синтаксису SQL також означає, що можлива інтеграція з існуючими інструментами BI, такими як Microstrategy. У вулику є драйвер ODBC / JDBC (це вже незавершена робота), який повинен дозволити цьому статися найближчим часом. Він також починає додавати підтримку індексів, які повинні забезпечувати підтримку детальних запитів, поширених у таких середовищах.

Нарешті - це не стосується питання безпосередньо - Hive - це основа для виконання аналітичних запитів. Незважаючи на те, що його домінантою є запит плоских файлів, немає жодної причини, чому він не може запитувати інші магазини. В даний час Hive можна використовувати для запиту даних, що зберігаються в Hbase (що є ключовим сховищем, подібним до тих, що знаходяться в кишках більшості RDBMS), а проект HadoopDB використовував Hive для запиту федеративного рівня RDBMS.


37

Я вважаю це найбільш корисним (хоча це рік) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo

У ньому конкретно йдеться про Свині проти вулика та коли та де вони працюють у Yahoo. Я вважав це дуже проникливим. Деякі цікаві нотатки:

Про покрокові зміни / оновлення наборів даних:

Натомість, правильний підхід - об'єднання проти нових додаткових даних та використання результатів разом із результатами попереднього повного приєднання. Це займе лише кілька хвилин. Стандартні операції з базою даних можуть бути реалізовані таким чином на латинській мові свиней, що робить Pig гарним інструментом для цього випадку використання.

Про використання інших інструментів за допомогою потокової передачі:

Інтеграція свиней з потоковою передачею також дозволяє дослідникам легко взяти сценарій Perl або Python, який вони вже налагодили на невеликому наборі даних, і запустити його на величезному наборі даних.

Про використання вулика для зберігання даних:

В обох випадках реляційна модель та SQL найкраще підходять. Дійсно, зберігання даних було одним із основних випадків використання SQL протягом більшої частини його історії. Він має правильні конструкції для підтримки типів запитів та інструментів, які хочуть використовувати аналітики. І він уже використовується як інструментами, так і користувачами на місцях.

Підпроект Hiveop Hive забезпечує інтерфейс SQL та реляційну модель для Hadoop. Команда Hive розпочала роботу над інтеграцією з інструментами BI через інтерфейси, такі як ODBC.


1
+1 чудово бачити порівняння від Yahoo, який я розумію, як я розумію оригінального творця Pig, або, принаймні, дуже великого прихильника. Редагувати: З Якоба вище я бачу, що автор (Алан Гейтс) - це Свинячий архітектор у Yahoo - така велика частка :)
Долан Антенуччі

3
Посилання мертва. Я думаю, що правильною URL-адресою в даний момент є: https://developer.yahoo.com/blogs/hadoop/pig-hive-yahoo-464.html .
agarie

1
Оновлено посилання вище
j03m

ще одне нове посилання: yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo
rcrogers

2 вищевказаних посилання більше не знайдено.
Кешав Прадіп Раманат

28

Погляньте на порівняння вуликів Pig Vs у оболонці з горіхів із статті «дезир»

Вулик краще, ніж PIG в: Розділи, сервер, веб-інтерфейс та підтримка JDBC / ODBC.

Деякі відмінності:

  1. Вулик найкраще для структурованих даних і PIG найкраще для напівструктурованих даних

  2. Вулик використовується для звітності та PIG для програмування

  3. Вулик використовується як декларативний SQL & PIG як процедурна мова

  4. Вулик підтримує перегородки , а PIG - ні

  5. Вулик може запустити додатковий сервер на основі ощадливості , а PIG не може

  6. Hive заздалегідь визначає таблиці ( схема ) + зберігає інформацію про схему в базі даних; PIG не має виділених метаданих бази даних

  7. Вулик не підтримує Avro, але PIG робить. EDIT: Вулик підтримує Avro, задайте serde як org.apache.hadoop.hive.serde2.avro

  8. Свиня також підтримує додаткову функцію COGROUP для зовнішніх з'єднань, але вулик цього не робить. Але і Hive & PIG можуть динамічно приєднуватися, замовляти та сортувати .


17

Я вважаю, що справжньою відповіддю на ваше запитання є те, що вони / були незалежними проектами і не було цілі централізованої координації. Вони були в різних просторах на ранніх термінах і переросли з часом, оскільки обидва проекти розширюються.

Перефразоване з книги Hadoop O'Reilly:

Pig: мова потоку даних та середовище для дослідження дуже великих наборів даних.

Вулик: розподілений сховище даних


22
Вулик - це не що інше, як RDBMS. Він обробляє плоскі файли так само, як Pig. Вони в основному роблять те саме. Подивіться на оптимізатори, які вони використовують при складанні завдання, оскільки це найбільша реальна різниця.
Стів Северанс

12

Ви можете досягти подібних результатів за допомогою запитів на свиней / вуликів. Основна відмінність полягає в підході до розуміння / написання / створення запитів.

Свиня прагне створити потік даних: невеликі кроки, коли в кожному, який ви робите деяку обробку,
вулик дає вам SQL-подібну мову для роботи з вашими даними, тому перетворення з RDBMS набагато простіше (Pig може бути простішим для того, хто не мав раніше досвіду з SQL)

Варто також відзначити, що для Hive ви можете приємно використовувати інтерфейс для роботи з цими даними (Beeswax для HUE або веб-інтерфейс Hive), а також він дає вам мета-магазин для отримання інформації про ваші дані (схему тощо), що корисно як центральна інформація про ваші дані.

Я використовую і Hive, і Pig, для різних запитів (я використовую той, де я можу записувати запити швидше / простіше, я роблю це таким чином, в основному, спеціальні запити) - вони можуть використовувати ті самі дані, що і вхідні дані. Але в даний час я роблю більшу частину своєї роботи через Beeswax.


12

Pig дозволяє завантажувати дані та код користувача в будь-яку точку трубопроводу. Це може бути особливо важливим, якщо дані є потоковими даними, наприклад, дані із супутників чи інструментів.

Вулик, який базується на RDBMS, потребує спочатку імпортування даних (або завантаження) даних, після чого над ними можна працювати. Отже, якщо ви використовували Hive для потокового передачі даних, вам доведеться зберігати відра для заповнення (або файли) та використовувати вулик для кожного заповненого відра, використовуючи інші відра, щоб продовжувати зберігати нещодавно отримані дані.

Свиня також використовує ледачу оцінку. Це дозволяє більшою простотою програмування, і ви можете використовувати їх для аналізу даних по-різному з більшою свободою, ніж у такій мові, як SQL, як Hive. Тож якщо ви дійсно хотіли проаналізувати матриці чи шаблони в деяких неструктурованих вами даних, і хотіли зробити цікаві обчислення на них, з Pig ви можете пройти деяку справедливу відстань, тоді як з Hive, вам потрібно щось ще грати з результатами.

Pig швидше в імпорті даних, але повільніше в реальному виконанні, ніж мова, зручна для RDBMS, як у вулику.

Свиня добре підходить для паралелізації, тому вона, можливо, має перевагу для систем, де наборів даних величезна, тобто для систем, де вас більше турбує пропускна здатність ваших результатів, ніж затримка (час для отримання конкретної дати результату).


10

Вулик проти свиней

Hive - це інтерфейс SQL, який дозволяє довіряти користувачам sql або Іншим інструментам, наприклад Tableu / Microstrategy / будь-яким іншим інструментом чи мовою, що має інтерфейс sql ..

PIG більше схожий на трубопровід ETL. З покроковими командами, як оголошення змінних, циклічне, ітераційне, умовне виконання тощо.

Я вважаю за краще писати сценарії Pig над QL у вулик, коли хочу писати складні крок за кроком логіки. Коли мені зручно писати один sql для отримання даних, я хочу використовувати вулик. для вулика вам потрібно буде визначити таблицю перед запитом (як це робиться в RDBMS)

Мета обох відрізняється, але під капотом обидва роблять те ж саме, перетворюють на карту зменшення програм. Також спільнота Apache з відкритим кодом додає більше і більше функцій для обох проектів


8

Прочитайте різницю між PIG та HIVE за цим посиланням.

http://www.aptibook.com/Articles/Pig-and-hive- prednosti– недоліки- особливості

Наведено всі аспекти. Якщо ви перебуваєте в плутанині, яку вибрати, ви повинні побачити цю веб-сторінку.


2
Хороша стаття, але ви повинні її узагальнити у відповідь: meta.stackexchange.com/questions/8231/…
Грубер

7
  1. Свиня-латинь - це стиль потоку даних, більше підходить для програмного інженера. Хоча sql більше підходить для аналітиків, які звикли до sql. Для складного завдання, для вулика вам потрібно вручну створити тимчасову таблицю для зберігання проміжних даних, але свині це не потрібно.

  2. Pig-латинка підходить для складної структури даних (наприклад, невеликий графік). Існує структура даних у свині під назвою DataBag, яка є колекцією Tuple. Іноді вам потрібно обчислити показники, які включають кілька кортежів (між кортежами є прихований зв’язок, в цьому випадку я би назвав це графіком). У цьому випадку дуже просто написати UDF для обчислення показників, які включають кілька кортежів. Звичайно, це можна зробити у вулику, але це не так зручно, як у свині.

  3. Написати UDF у свині набагато простіше, ніж на вулику, на мою думку.

  4. Pig не підтримує метадані (або це необов'язково; в майбутньому він може інтегрувати hcatalog). У вулику метадані таблиць зберігаються в базі даних.

  5. Ви можете налагоджувати сценарій свиней у місцевому середовищі, але вулику було б важко це зробити. Причина - пункт 3. Потрібно налаштувати метадані вулика у вашому місцевому середовищі, забираючи дуже багато часу.




4

За посиланням: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive ?

Вулик - це не повна база даних. Конструктивні обмеження та обмеження Hadoop та HDFS накладають обмеження на те, що може зробити Hive.

Вулик найбільше підходить для додатків сховищ даних, де

1) Проаналізовано відносно статичні дані,

2) Швидкі часи реакції не потрібні;

3) Коли дані швидко не змінюються.

Вулик не надає важливих функцій, необхідних для OLTP, Інтернет-обробки транзакцій. Це ближче до того, щоб бути інструментом OLAP, он-лайн аналітичною обробкою. Отже, Hive найкраще підходить для програм зберігання даних, де великий набір даних зберігається та видобувається для огляду, звітів тощо.


4

Простіше кажучи, Pig - це платформа високого рівня для створення програм MapReduce, які використовуються з Hadoop, за допомогою сценаріїв свиней ми обробляємо велику кількість даних у потрібний формат.

Після опрацювання отриманих даних ці оброблені дані зберігаються у HDFS для подальшої обробки для отримання бажаних результатів.

Зверху до збережених оброблених даних ми застосуємо HIVE SQL команди, щоб отримати бажані результати, внутрішньо ці команди hive sql запускають програми MAP Reduce.


це насправді не змістовне доповнення до бази знань. спробуйте додати більше інформації
agconti

4

Для короткого огляду обох, коротше:

1) Свиня - це реляційна алгебра над гадопом

2) Вулик - це SQL над hadoop (на один рівень вище Свині)


Цікаве порівняння з
алгеброю

3

Що HIVE може зробити, що неможливо в PIG?

Розбиття можна зробити за допомогою HIVE, але не в PIG, це спосіб обходу виводу.

Що PIG може зробити, що неможливо в HIVE?

Посилання на позиції - Навіть коли у вас немає імен полів, ми можемо посилатися, використовуючи позицію на зразок 0 доларів - для першого поля, 1 долара для другого тощо.

І ще одна принципова відмінність полягає в тому, що PIG не потребує схеми для запису значень, але HIVE потрібна схема.

Ви можете підключитись із будь-якого зовнішнього додатка до HIVE за допомогою JDBC та інших, але не за допомогою PIG.

Примітка: Обидва запущені поверх HDFS (файлова система, що розподіляється hadoop), і заяви конвертуються в програми зменшення карт.


3

Коли ми використовуємо це Hadoopв сенсі, це означає, що ми намагаємося обробити величезну обробку даних Кінцевою метою обробки даних було б генерувати з неї вміст / звіти.

Отже, вона внутрішньо складається з 2 основних видів діяльності:

1) Завантаження обробки даних

2) Створюйте вміст і використовуйте його для звітності / тощо.

Завантаження / обробка даних -> Свиня буде в цьому корисною.

Це допомагає як ETL (Ми можемо виконувати операції etl, використовуючи сценарії pig.).

Після опрацювання результату ми можемо використовувати вулик для створення звітів на основі обробленого результату.

Вулик: його побудовано поверх hdfs для складної обробки.

Ми можемо легко створювати звіти про adhoc, використовуючи вулик з обробленого вмісту, створеного від свині.


1

Свиня їсть що завгодно! Це означає, що він може споживати неструктуровані дані.

Для вулика потрібна схема.


1

Свиня корисна для навантажень типу ETL. Наприклад, набір перетворень, який потрібно робити щодня.

Вулик світить, коли вам потрібно запустити запити adhoc або просто хочете вивчити дані. Іноді він може виступати як інтерфейс для вашого шару візуалізації (Tableau / Qlikview).

Обидва є важливими і служать різному призначенню.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.