| מפתח | קרן התוכנה אפאצ'י |
|---|---|
| מחזור חיים | 9 בנובמבר 2011 – הווה (14 שנים) |
| גרסה אחרונה | 3.1.3 (9 באפריל 2022) |
| מערכת הפעלה | חוצה-פלטפורמות |
| נכתבה בשפות | ג'אווה (שפת תכנות) |
| סוג רישיון | אפאצ'י 2.0 |
| קוד מקור | |
| hive | |
אפאצ'י הייב (תרגום:כוורת; באנגלית:Apache Hive) הוא פרויקט תוכנה שלמחסן נתונים שנבנה על גביהאדופ ומאפשר שירותי סיכום נתונים, שאילתות, וניתוחים.[1] הייב נותן ממשק מדמהSQL החושף ממשק לשאילתות על נתונים מאוחסנים על גבי בסיסי נתונים שונים ומערכות קבצים הנמצאים באינטגרציה עם האדופ. שאילתות SQL מסורתית חייבות להיות מיושמות בעזרת ממשק ה JAVA של MapReduce עבור יישומים הדורשים שאילתות על נתונים מבוזרים.
הייב מספק אבסטרקציה של SQL לאינטגרציה של שאילתות עם מאפייני SQL, הנקראHiveQL לתוך שכבת הקוד (Java) ללא צורך למימוש השאילתות בממשק Java. מכיוון שמרבית ממחסני הנתונים משתמשים בשאילתות SQL הייב מאפשר הגירה של אפליקציות לשימוש בהאדופ.[2]
הפיתוח הראשוני היה על ידיפייסבוק, אולם מאוחר יותר נכנס לשימוש ופיתוח על ידי חברות אחרות כגוןנטפליקס וFINRA.[3][4]אמזון מתחזקת ענף של עץ הפיתוח של הייב הכלול בשירותי הרשת שלה,AWS.[5]
input_lines=LOAD'/tmp/input.txt'AS(line:chararray);words=FOREACHinput_linesGENERATEFLATTEN(TOKENIZE(line))ASword;filtered_words=FILTERwordsBYwordMATCHES'\\w+';word_groups=GROUPfiltered_wordsBYword;word_count=FOREACHword_groupsGENERATECOUNT(filtered_words)AScount,groupASword;ordered_word_count=ORDERword_countBYcountDESC;STOREordered_word_countINTO'/tmp/results.txt';
תוכנית "ספירת מילים", מחשבת את מספר הפעמים שכל מילה מופיעה בקלט נתון. דוגמה לכתיבת תוכנית כזו ב HiveQL:
DROPTABLEIFEXISTSdocs;CREATETABLEdocs(lineSTRING);LOADDATAINPATH'input'OVERWRITEINTOTABLEdocs;CREATETABLEword_countsASSELECTword,count(1)AScountFROM(SELECTexplode(split(line,'\s'))ASwordFROMdocs)tempGROUPBYwordORDERBYword;
הסבר על פעולת התוכנית:בדוק אם טבלת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 ממיין את המילים לפי סדר האלף-בית.