לדלג לתוכן

אפאצ'י הייב

מתוך ויקיפדיה, האנציקלופדיה החופשית
(הופנה מהדף Hive)
אפאצ'י הייב
Apache Hive
מפתח קרן התוכנה אפאצ'י עריכת הנתון בוויקינתונים
מחזור חיים 9 בנובמבר 2011 – הווה (13 שנים) עריכת הנתון בוויקינתונים
גרסה אחרונה 3.1.3 (9 באפריל 2022) עריכת הנתון בוויקינתונים
מערכת הפעלה חוצה-פלטפורמות עריכת הנתון בוויקינתונים
נכתבה בשפות Java עריכת הנתון בוויקינתונים
סוג רישיון אפאצ'י 2.0 עריכת הנתון בוויקינתונים
קוד מקור
hive.apache.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

אפאצ'י הייב (תרגום: כוורת; באנגלית: Apache Hive) הוא פרויקט תוכנה של מחסן נתונים שנבנה על גבי האדופ ומאפשר שירותי סיכום נתונים, שאילתות, וניתוחים.[1] הייב נותן ממשק מדמה SQL החושף ממשק לשאילתות על נתונים מאוחסנים על גבי בסיסי נתונים שונים ומערכות קבצים הנמצאים באינטגרציה עם האדופ. שאילתות SQL מסורתית חייבות להיות מיושמות בעזרת ממשק ה JAVA של MapReduce עבור יישומים הדורשים שאילתות על נתונים מבוזרים.

הייב מספק אבסטרקציה של SQL לאינטגרציה של שאילתות עם מאפייני SQL, הנקרא HiveQL לתוך שכבת הקוד (Java) ללא צורך למימוש השאילתות בממשק Java. מכיוון שמרבית ממחסני הנתונים משתמשים בשאילתות SQL הייב מאפשר הגירה של אפליקציות לשימוש בהאדופ.[2]

הפיתוח הראשוני היה על ידי פייסבוק, אולם מאוחר יותר נכנס לשימוש ופיתוח על ידי חברות אחרות כגון נטפליקס ו FINRA.[3][4] אמזון מתחזקת ענף של עץ הפיתוח של הייב הכלול בשירותי הרשת שלה, AWS.[5]

דוגמה לשימוש ב HiveQL

[עריכת קוד מקור | עריכה]

תוכנית לספירת מילים ב"פיג"

[עריכת קוד מקור | עריכה]
input_lines = LOAD '/tmp/input.txt' AS (line:chararray);
words = FOREACH input_lines GENERATE FLATTEN(TOKENIZE(line)) AS word;
filtered_words = FILTER words BY word MATCHES '\\w+';
word_groups = GROUP filtered_words BY word;
word_count = FOREACH word_groups GENERATE COUNT(filtered_words) AS count, group AS word;
ordered_word_count = ORDER word_count BY count DESC;
STORE ordered_word_count INTO '/tmp/results.txt';

תוכנית "ספירת מילים" ב HiveQL

[עריכת קוד מקור | עריכה]

תוכנית "ספירת מילים", מחשבת את מספר הפעמים שכל מילה מופיעה בקלט נתון. דוגמה לכתיבת תוכנית כזו ב HiveQL:

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);
LOAD DATA INPATH 'input' OVERWRITE INTO TABLE docs;
CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
 (SELECT explode(split(line, '\s')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;

הסבר על פעולת התוכנית: בדוק אם טבלתdocs קיימת ומחק אותה אם כן. צור טבלה חדשה בשם docs עם עמודה אחת מסוג STRING בשם line.

טען את הקובץ המפורט או הספרייה (במקרה שלנו "input") לתוך הטבלה. OVERWRITE מציין שטבלת היעד שאליה הנתונים נטענים תיכתב מחדש, אחרת הנתונים יהיה "מתווספים" (appended).

CREATE TABLE word_counts AS SELECT word, count(1) AS count יוצר טבלה בשם word_counts עם שתי עמודות: word ו count. שאילתה זו עובדת על פלט השאילתא הפנימית (SELECT explode(split(line, '\s')) AS word FROM docs) temp". שאילתה זו משמשת כדי לפצל את מילות הקלט לטבלה זמנית המכונה temp. כאשר GROUP BY WORD מקבץ את התוצאות בהתבסס על המפתחות שלהם. התוצאות של עמודת count מחזיקה את מספר המופעים של כל מילה בעמודת word. לבסוף, ORDER BY WORDS ממיין את המילים לפי סדר האלף-בית.

קישורים חיצוניים

[עריכת קוד מקור | עריכה]
ויקישיתוף מדיה וקבצים בנושא אפאצ'י הייב בוויקישיתוף

הערות שוליים

[עריכת קוד מקור | עריכה]
  1. ^ Venner, Jason (2009). Pro Hadoop. Apress. ISBN 978-1-4302-1942-2.
  2. ^ Programming Hive [Book]. אורכב מ-המקור ב-2020-02-18. נבדק ב-2017-09-15.
  3. ^ Use Case Study of Hive/Hadoop
  4. ^ אפאצ'י הייב, בביצוע OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix", סרטון באתר יוטיוב
  5. ^ Amazon Elastic MapReduce Developer Guide