מדריך כוורת - ארכיטקטורת כוורת ומחקר מקרה של נאס'א



בלוג הדרכה זה של Hive נותן לך ידע מעמיק בארכיטקטורת כוורת ובמודל נתוני כוורת. זה גם מסביר את מקרה המחקר של נאס'א בנושא Apache Hive.

מדריך כוורת של אפאצ'י: מבוא

Hive הוא כלי משומש בקפידה לתעשייה עבור Big Data Analytics וכלי נהדר להתחיל את ה- עם. בבלוג הדרכה זה של Hive נדון לעומק על Apache Hive. Apache Hive הוא כלי אחסון נתונים ב- , המספק שפה כמו SQL לצורך שאילתות וניתוח ביג דאטה. המוטיבציה מאחורי התפתחות Hive היא מסלול הלמידה ללא חיכוך עבור מפתחי אנליסטים SQL. כוורת היא לא רק מושיעה לאנשים מרקע שאינו מתכנת, אלא היא מצמצמת את עבודתם של מתכנתים המבלים שעות ארוכות בכתיבת תוכניות MapReduce. בבלוג זה של Apache Hive Tutorial, אדבר על:





מדריך כוורת אפאצ'י: מה זה כוורת?

Apache Hive היא מערכת מחסן נתונים הבנויה על גבי Hadoop ומשמשת לניתוח נתונים מובנים וחצי מובנים.כוורת ממצה את המורכבות של Hadoop MapReduce. ביסודו של דבר, הוא מספק מנגנון להקרין מבנה על הנתונים ולבצע שאילתות שנכתבו ב- HQL (Hive Query Language) הדומות להצהרות SQL. באופן פנימי, שאילתות או HQL הופכות למפה להפחתת עבודות על ידי מהדר הכוורת. לכן, אינך צריך לדאוג לכתיבת תוכניות MapReduce מורכבות לעיבוד הנתונים שלך באמצעות Hadoop. זה מכוון למשתמשים שנוח להם עם SQL. Apache Hive תומכת בשפת הגדרת נתונים (DDL), שפת מניפולציה של נתונים (DML) ופונקציות מוגדרות על ידי המשתמש (UDF).

מדריך כוורת למתחילים | הבנת כוורת בעומק | אדוריקה



SQL + Hadoop MapReduce = HiveQL

מדריך כוורת של אפאצ'י: סיפור של כוורת - מפייסבוק ועד אפאצ'י

מקרה שימוש בפייסבוק - מדריך כוורת - אדוריקהתאנה : מדריך כוורת - מקרה שימוש בפייסבוק

אתגרים בפייסבוק: צמיחה אקספוננציאלית של נתונים

לפני 2008 כל תשתית עיבוד הנתונים בפייסבוק נבנתה סביב מחסן נתונים המבוסס על RDBMS מסחרי. תשתיות אלה היו מסוגלות להספיק לצרכים של פייסבוק באותה תקופה. אך מכיוון שהנתונים התחילו לצמוח מהר מאוד, זה הפך לאתגר עצום לנהל ולעבד את מערך הנתונים העצום הזה. על פי מאמר בפייסבוק, הנתונים הוקדמו מנתוני 15 TB בשנת 2007 לנתונים של 2 PB בשנת 2009. כמו כן, מוצרים רבים בפייסבוק כוללים ניתוח של נתונים כמו תובנות קהל, לקסיקון פייסבוק, מודעות פייסבוק וכו '. אז, הם נזקק לפיתרון מדרגי וחסכוני כדי להתמודד עם הבעיה ממש ולכן התחיל להשתמש במסגרת Hadoop.



דמוקרטיזציה Hadoop - MapReduce

אך ככל שהנתונים גדלו, המורכבות של קודי Map-Reduce גדלה באופן פרופורציונלי. לכן, הכשרת אנשים עם רקע שאינו מתכנת לכתיבת תוכניות MapReduce נעשתה קשה. כמו כן, לצורך ביצוע ניתוח פשוט יש לכתוב מאה שורות של קוד MapReduce. מאז, SQL היה בשימוש נרחב על ידי מהנדסים ואנליסטים, כולל פייסבוק, ולכן הצבת SQL בראש Hadoop נראתה דרך הגיונית להנגיש את Hadoop למשתמשים עם רקע SQL.

לפיכך, היכולת של SQL להספיק לרוב הדרישות האנליטיות והסקלביליות של Hadoop הולידה כוורת אפאצ'י המאפשר לבצע שאילתות כמו SQL על הנתונים הקיימים ב- HDFS. מאוחר יותר, פרויקט הכוורת נפתח במקור באוגוסט 2008 על ידי פייסבוק והוא זמין באופן חופשי ככוורת אפאצ'י כיום.

עכשיו, בואו נסתכל על התכונות או היתרונות של Hive שהופכות אותה לפופולארית כל כך.

מדריך כוורת אפאצ'י: יתרונות הכוורת

  • שימושי לאנשים שאינם מרקע תכנותי מכיוון שהוא מבטל את הצורך לכתוב תוכנית MapReduce מורכבת.
  • ניתן להרחבה ו מדרגי להתמודד עם נפח הגדל ומגוון הנתונים, מבלי להשפיע על ביצועי המערכת.
  • זהו כלי ETL יעיל (Extract, Transform, Load).
  • כוורת תומכת בכל יישום לקוח שנכתב ב- Java, PHP, Python, C ++ או Ruby על ידי חשיפת היישומים שלו שרת חסכן . (אתה יכול להשתמש בשפות צד לקוח אלה המוטמעות ב- SQL לגישה למסד נתונים כגון DB2 וכו ').
  • מכיוון שמידע המטא-נתונים של Hive נשמר ב- RDBMS, הוא מצמצם משמעותית את הזמן לביצוע בדיקות סמנטיות במהלך ביצוע השאילתות.

מדריך כוורת אפאצ'י: היכן להשתמש בכוורת אפאצ'י?

Apache Hive מנצלת את שני העולמות כלומר מערכת מסדי נתונים של SQL ו- מִסגֶרֶת. לכן משתמשים בה הרבה מאוד חברות. הוא משמש בעיקר לאחסון נתונים בו ניתן לבצע ניתוחים וכריית נתונים שאינם דורשים עיבוד בזמן אמת. חלק מהשדות שבהם אתה יכול להשתמש ב- Apache Hive הם כדלקמן:

  • אחסון נתונים
  • ניתוח אד-הוק

כפי שנאמר, אינך יכול למחוא כפיים ביד אחת בלבד כלומר אינך יכול לפתור כל בעיה בכלי אחד. לכן, תוכל לחבר את Hive עם כלים אחרים לשימוש בה בתחומים רבים אחרים. לדוגמא, ניתן להשתמש ב- Tableau יחד עם Apache Hive לצורך הדמיה של נתונים, שילוב של Apache Tez עם Hive יספק לך יכולות עיבוד בזמן אמת וכו '.
בהמשך קדימה בבלוג זה של Apache Hive Tutorial, הבה נסתכל על מקרה מקרה של נאס'א, בו תוכלו להכיר כיצד כוורת פתרה את הבעיה שעמדה בפני מדעני נאס'א בעת ביצוע הערכה של מודלים אקלים.

מדריך כוורת: מחקר מקרה של נאס'א

מודל אקלים הוא ייצוג מתמטי של מערכות אקלים המבוססות על גורמים שונים המשפיעים על אקלים כדור הארץ. ביסודו של דבר, הוא מתאר את האינטראקציה בין גורמי אקלים שונים כמו אוקיינוס, שמש, אווירה וכו 'לספק תובנה לגבי הדינמיקה של מערכת האקלים. הוא משמש להקרנת תנאי האקלים על ידי הדמיית שינויי האקלים על בסיס גורמים המשפיעים על האקלים. מעבדת הנעת הסילון של נאס'א פיתחה מערכת הערכה של מודל אקלים אזורי (RCMES) לניתוח והערכה של מודל תפוקת האקלים כנגד נתוני חישה מרחוק הנמצאים במאגרים חיצוניים שונים.

ל- RCMES (מערכת הערכת מודל האקלים האזורי) שני מרכיבים:

  • RCMED (מאגר הערכת מודלים אקלימיים אזוריים):

זהו מסד נתונים ענני הניתן להרחבה אשר טוען את נתוני החישה מרחוק ונתוני ניתוח מחדש שקשורים לאקלים באמצעות מחלצים כמו מחלצים של Apache OODT, Apache Tika וכו '. לבסוף, הוא הופך את הנתונים כמודל נקודת הנתונים שהוא בצורה (רוחב. , אורך, זמן, ערך, גובה) ומאחסן אותו במאגר ה- SQL שלי. הלקוח יכול לאחזר את הנתונים הקיימים ב- RCMED על ידי ביצוע שאילתות שטח / זמן. התיאור של שאילתות כאלה אינו רלוונטי עבורנו כעת.

  • RCMET (ערכת כלים הערכת מודל אקלים אזורי):

זה מספק למשתמש יכולת להשוות את נתוני הייחוס הקיימים ב- RCMED עם נתוני הפלט של מודל האקלים שנאספו ממקורות אחרים לביצוע ניתוחים והערכה שונים. אתה יכול להתייחס לתמונה המופיעה למטה כדי להבין את הארכיטקטורה של RCMES.

נתוני ההתייחסות ב- RCMED מגיעים מחישה מרחוק מבוססת לווין, על פי הפרמטרים השונים הנדרשים להערכת מודל האקלים. לדוגמא - AIRS (צליל אינפרא אדום אטמוספרי) מספק פרמטרים כמו טמפרטורת אוויר על פני השטח, טמפרטורה וגיאו-פוטנציאל, TRMM (משימת מדידת גשמים טרופית) מספק משקעים חודשיים וכו '.

תרשים סופגניות לעומת תרשים עוגה

בעיות העומדות בפני נאס'א באמצעות מערכת מסדי הנתונים MySQL:

  • לאחר טעינת מסד הנתונים של MySQL עם 6 מיליארד טופלים של הטופס (קו רוחב, אורך, זמן, ערך נקודת נתונים, גובה), המערכת קרסה כפי שמוצג בתמונה לעיל.
  • גם לאחר שחילקה את כל הטבלה לקבוצות משנה קטנות יותר, המערכת יצרה תקורה ענקית בעת עיבוד הנתונים.

לכן, הם נזקקו לפיתרון מדרגי שיכול לאחסן ולעבד את כמות הנתונים העצומה הזו עם SQL כמו יכולת שאילתות. לבסוף, הם החליטו להשתמש באפצ'י כוורת כדי להתגבר על הבעיות שצוינו לעיל.

כיצד Apache Hive יכולה לפתור את הבעיה?

עכשיו, בואו נראה, מהן התכונות האלה ששכנעו את צוות JPL של נאס'א לכלול את אפאצ'י כוורת כחלק בלתי נפרד מאסטרטגיית הפתרונות שלהם:

  • מכיוון ש- Apache Hive פועלת על גבי Hadoop, היא ניתנת להרחבה ויכולה לעבד נתונים בצורה מבוזרת ומקבילה.
  • הוא מספק שפת שאילתת כוורת הדומה ל- SQL ולכן קל ללמוד.

פריסת הכוורת:

התמונה הבאה מסבירה את אדריכל RCMES עם שילוב Apache Hive:

תאנה : מדריך כוורת - אדריכלות RCMES עם כוורת אפאצ'י

התמונה לעיל מציגה את פריסת כוורת האפאצ'י ב- RCMES. הצעדים הבאים ננקטו על ידי צוות נאס'א בעת פריסת כוורת אפאצ'י:

  • הם התקנו את כוורת באמצעות Cloudera ו- Apache Hadoop כפי שמוצג בתמונה לעיל.
  • הם השתמשו ב- Apache Sqoop כדי לבלוע נתונים לכוורת ממסד הנתונים MySQL.
  • עטיפת אפאצ'י OODT יושמה כדי לבצע שאילתות ב- Hive ולאחזר את הנתונים חזרה ל- RCMET.

תצפיות מידוד ראשוניות עם כוורת:

  • בתחילה הם העלו 2.5 מיליארד נקודות נתונים לטבלה אחת וביצעו שאילתת ספירה. לדוגמה, כוורת> בחר ספירה (datapoint_id) מ- DataPoint. לקח 5-6 דקות לספור את כל השיאים (15–17 דקות למלא 6.8 מיליארד הרשומות).
  • שלב הצמצום היה מהיר, אך שלב המפה לקח 95% מכלל זמן העיבוד. הם השתמשו בשש ( 4 ליבות מרובעות ) מערכות עם זיכרון RAM של 24 GB (בערך) בכל אחת מהמערכות.
  • גם לאחר הוספת מכונות נוספות, שינוי גודל החסימה HDFS (64 מגה, 128 מגה, 256 מגהבייט) ושינוי משתני תצורה רבים אחרים (io.סוג.גורם, אני.סוג.mb), הם לא זכו להצלחה רבה בהפחתת הזמן להשלמת הספירה.

תשומות מחברי קהילת כוורת:

לבסוף, חברי קהילת הכוורת נחלצו לעזרתם וסיפקו תובנות שונות לפתרון הבעיות עם יישומיהם הנוכחיים של כוורת:

  • הם הזכירו שמהירות הקריאה של HDFS היא בערך 60 מגה לשנייה לעומת 1GB / s במקרה של דיסק מקומי, תלוי בקיבולת הרשת ובעומס העבודה ב- NameNode.
  • החברים הציעו זאת 16 ממפות יידרשו במערכת הנוכחית שלהם להתאים לביצועי הקלט / פלט של משימה מקומית שאינה Hadoop.
  • הם גם הציעו להפחית את בגודל מפוצל עבור כל מיפוי להגדיל את המספרשֶׁלממפה ולכן, מתן יותר מקבילות.
  • לבסוף, חברי הקהילה אמרו להם לעשות זאת ספירת שימוש (1) במקום להתייחס ל לספור ( datapoint_id) . הסיבה לכך היא שבמקרה של ספירה (1), אין עמוד התייחסות ולכן לא מתרחשת שחרור לחץ ודה-ריליזציה במהלך ביצוע הספירה.

לבסוף, נאס'א הצליחה לכוון את אשכול הכוורת שלהם לציפיותיהם על ידי התחשבות בכל ההצעות שניתנו על ידי חברי קהילת הכוורת. ולכן הם הצליחו לשאול מיליארדי שורות תוך 15 שניות בלבד באמצעות תצורות המערכת שהוזכרו לעיל.

מדריך כוורת של אפאצ'י: אדריכלות הכוורת ומרכיביה

התמונה הבאה מתארת ​​את ארכיטקטורת הכוורת ואת הזרימה אליה מוגשת שאילתהכוורתולבסוף מעובד באמצעות MapReduce framework:

תאנה : מדריך כוורת - אדריכלות כוורת

כפי שמוצג בתמונה לעיל, ניתן לסווג את ארכיטקטורת הכוורת לרכיבים הבאים:

  • לקוחות כוורת: כוורת תומכת ביישומים שנכתבו בשפות רבות כמו Java, C ++, Python וכו 'באמצעות מנהלי התקנים JDBC, Thrift ו- ODBC. מכאן שאפשר תמיד לכתוב יישום לקוח כוורת שנכתב בשפה לפי בחירתם.
  • שירותי כוורת: Apache Hive מספקת שירותים שונים כמו CLI, ממשק אינטרנט וכו 'לביצוע שאילתות. נחקור כל אחד מהם בקרוב בבלוג הדרכה זה של כוורת.
  • מסגרת עיבוד וניהול משאבים: כְּלַפֵּי פְּנִים,Hive משתמשת ב- Hadoop MapReduce במסגרת כמנוע בפועל לביצוע השאילתות. הנו נושא נפרד בפני עצמו ולכן, אינו נדון כאן.
  • אחסון מבוזר: כאשר Hive מותקנת על גבי Hadoop, היא משתמשת ב- HDFS הבסיסי לאחסון המבוזר. אתה יכול להתייחס ל בלוג HDFS כדי ללמוד עוד על כך.

עכשיו, בואו נחקור את שני המרכיבים העיקריים הראשונים בארכיטקטורת הכוורת:

1. לקוחות כוורת:

Apache Hive תומך בסוגים שונים של יישומי לקוח לביצוע שאילתות ב- Hive. ניתן לסווג לקוחות אלה לשלושה סוגים:

  • לקוחות חסכוניים: מכיוון ששרת Hive מבוסס על Apache Thrift, הוא יכול לשרת את הבקשה מכל שפות התכנות התומכות ב- Thrift.
  • לקוחות JDBC: Hive מאפשרת ליישומי Java להתחבר אליו באמצעות מנהל ההתקן JDBC המוגדר בכיתה org.אפאצ'י.hadoop.hive.jdbc.HiveDriver.
  • לקוחות ODBC: מנהל ההתקן של Hive ODBC מאפשר ליישומים התומכים בפרוטוקול ODBC להתחבר ל- Hive. (כמו מנהל ההתקן JDBC, מנהל ההתקן ODBC משתמש בחסכון כדי לתקשר עם שרת הכוורת.)

2. שירותי כוורת:

Hive מספקת שירותים רבים כפי שמוצג בתמונה לעיל. בואו נסתכל על כל אחד מהם:

  • כוורת CLI (ממשק שורת פקודה): זוהי מעטפת ברירת המחדל המסופקת על ידי הכוורת בה תוכלו לבצע את שאילתות הכוורת ואת הפקודות שלכם ישירות.
  • ממשקי אינטרנט של Apache Hive: מלבד ממשק שורת הפקודה, Hive מספקת גם GUI מבוסס אינטרנט לביצוע שאילתות ופקודות של Hive.
  • שרת כוורת: שרת הכוורת בנוי על Apache Thrift ולכן מכונה גם Thrift Server המאפשר ללקוחות שונים להגיש בקשות ל- Hive ולאחזר את התוצאה הסופית.
  • נהג כוורת אפאצ'י: היא אחראית על קבלת השאילתות שהוגשו דרך CLI, ממשק האינטרנט, Thrift, ODBC או JDBC על ידי לקוח. לאחר מכן, מנהל ההתקן מעביר את השאילתה אל המהדר, שם מתבצע ניתוח, בדיקת סוג וניתוח סמנטי בעזרת סכמה הקיימת במטאסטור. בשלב הבא, נוצרת תוכנית לוגית מותאמת בצורה של DAG (Directed Acyclic Graph) של משימות להפחתת מפות ומשימות HDFS. לבסוף, מנוע הביצוע מבצע משימות אלה בסדר התלות שלהם באמצעות Hadoop.
  • Metastore: אתה יכול לחשוב גרורותכמאגר מרכזי לאחסון כל המידע המטא-נתונים של כוורת. מטא נתונים של כוורת כוללים סוגים שונים של מידע כמו מבנה טבלאות ומחיצותיחד עם העמודה, סוג העמודה, הסידור וההתפשטות הנדרשים לצורך פעולת קריאה / כתיבה על הנתונים הקיימים ב- HDFS. הגרורהמורכב משתי יחידות יסוד:
    • שירות המספק metastoreגישה ל- otheרשירותי כוורת.
    • אחסון דיסק עבור המטא נתונים המופרד מאחסון HDFS.

עכשיו, בואו נבין את הדרכים השונות ליישום מטסטור של Hiveבחלק הבא של מדריך הכוורת הזה.

מדריך Apache Hive: תצורת מטסטור

Metastore מאחסן את המידע על המטא-נתונים באמצעות RDBMS ובשכבת קוד פתוח ORM (Object Relational Model) הנקראת Data Nucleus הממירה את ייצוג האובייקט לסכמה התייחסותית ולהיפך. הסיבה לבחירת RDBMS במקום HDFS היא השגת זמן אחזור נמוך. אנו יכולים ליישם את metastore בשלוש תצורות הבאות:

1. מטסטור מוטבע:

גם שירות המטאסטור וגם שירות הכוורת פועל באותו JVM כברירת מחדל באמצעות מופע מסד נתונים משולב של דרבי בו מאוחסנים מטא נתונים בדיסק המקומי. זה נקרא תצורת מטא-סטור משובצת. במקרה זה, רק משתמש אחד יכול להתחבר למסד נתונים של גרורות בכל פעם. אם תתחיל מופע שני של מנהל ההתקן של כוורת, תקבל שגיאה. זה טוב לבדיקת יחידות, אך לא לפתרונות המעשיים.

2. Metastore מקומי:

תצורה זו מאפשרת לנו לקיים מספר רב של הפעלות כוורת, כלומר משתמשים מרובים יכולים להשתמש במסד הנתונים של הגרורות בו זמנית. זה מושג על ידי שימוש בכל מסד נתונים תואם JDBC כמו MySQL הפועל ב- JVM נפרד או במכונה שונה מזו של שירות Hive ושירות הגרורות המופעלות באותו JVM כפי שמוצג לעיל. באופן כללי, הבחירה הפופולארית ביותר היא הטמעת שרת MySQL כמסד הנתונים של metastore.

3. Metastore מרחוק:

בתצורת הגרורות המרוחקות, שירות המטסטור פועל ב- JVM נפרד משלו ולא ב- JVM בשירות הכוורת. תהליכים אחרים מתקשרים עם שרת הגרורות באמצעות ממשקי API של Thrift Network. אתה יכול לקבל שרת גרור אחד או יותר במקרה זה כדי לספק זמינות רבה יותר.היתרון העיקרי בשימוש במטא-סטור מרוחק הוא שאינך צריך לחלוק את אישורי הכניסה של JDBC עם כל משתמש ב- Hive כדי לגשת למסד הנתונים של metastore.

c לעומת c ++ לעומת java

מדריך כוורת של אפאצ'י: מודל נתונים

ניתן לסווג את הנתונים ב- Hive לשלושה סוגים ברמה הגרעינית:

  • שולחן
  • חֲלוּקָה
  • דְלִי

טבלאות:

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

1. טבלה מנוהלת:

פקודה:

צור טבלה (data_type column1, data_type column2)

טען נתונים INPATH INTO לטבלה managed_table

כפי שהשם מרמז (טבלה מנוהלת), Hive אחראית על ניהול הנתונים של טבלה מנוהלת. במילים אחרות, מה שהתכוונתי באומרתי, 'כוורת מנהלת את הנתונים', זה שאם אתה טוען את הנתונים מקובץ הקיים ב- HDFS לכוורת שולחן מנוהל והוצא עליו פקודת DROP, הטבלה יחד עם המטא-נתונים שלה יימחקו. אז, הנתונים השייכים לנפילה שולחן מנוהל כבר לא קיים בשום מקום ב- HDFS ואינך יכול לאחזר אותו בשום אופן. בעיקרון, אתה מעביר את הנתונים בעת הנפקת הפקודה LOAD ממיקום הקובץ HDFS לספריית מחסן Hive.

הערה: נתיב ברירת המחדל של ספריית המחסן מוגדר ל- / user / hive / warehouse. הנתונים של טבלת כוורת נמצאים בספריית מחסן / שם טבלה (HDFS). ניתן גם לציין את הנתיב של ספריית המחסן בפרמטר התצורה hive.metastore.warehouse.dir הקיים ב- hive-site.xml.

2. טבלה חיצונית:

פקודה:

צור טבלה חיצונית (עמודת נתונים 1 סוג, עמודת נתונים נתונים סוג) מיקום ''

טען נתונים INPATH '' אל הטבלה

מבני נתונים ואלגוריתמים של java

ל שולחן חיצוני , Hive אינה אחראית לניהול הנתונים. במקרה זה, כאשר אתה מוציא את הפקודה LOAD, Hive מעבירה את הנתונים לספריית המחסן שלה. לאחר מכן, כוורת יוצרת את המידע המטא-נתונים עבור הטבלה החיצונית. עכשיו, אם אתה מוציא פקודת DROP ב- שולחן חיצוני , רק מידע מטא-נתונים בנוגע לטבלה החיצונית יימחק. לכן, אתה עדיין יכול לאחזר את הנתונים של אותה טבלה חיצונית מאוד מספריית המחסן באמצעות פקודות HDFS.

מחיצות:

פקודה:

צור טבלה שם שם (סוג נתונים נתונים של עמודת עמודת, סוג נתונים של עמודת עמוד 2) מחולק על ידי (סוג נתונים של מחיצה 1, סוג נתונים של מחיצה 2, & hellip.)

Hive מארגנת טבלאות למחיצות לקיבוץ סוג נתונים דומה יחד על בסיס עמודה או מפתח מחיצה. לכל טבלה יכולות להיות מפתחות מחיצה אחד או יותר לזיהוי מחיצה מסוימת. זה מאפשר לנו לבצע שאילתה מהירה יותר על פרוסות הנתונים.

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

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

נניח שיש לנו נתונים לשלוש מחלקות בטבלת הסטודנטים_נתונים שלנו - CSE, ECE ו- Civil. לכן, יהיו לנו שלוש מחיצות בסך הכל לכל אחת מהמחלקות כפי שמוצג בתמונה למטה. ולגבי כל מחלקה יהיה לנו את כל הנתונים לגבי אותה מחלקה השוכנת בספריית משנה נפרדת בספריית טבלת הכוורת. לדוגמא, כל נתוני הסטודנטים הנוגעים למחלקות CSE יאוחסנו במשתמש / כוורת / מחסן / student_details / dept. = CSE. לכן, השאלות לגבי תלמידי CSE יצטרכו רק לחפש את הנתונים שנמצאים במחיצת CSE. זה הופך את המחיצה לשימושית מאוד מכיוון שהיא מפחיתה את חביון השאילתות על ידי סריקה בלבד רלוונטי מחולקים נתונים במקום כל מערך הנתונים. למעשה, ביישומים בעולם האמיתי, תוכלו להתמודד עם מאות TB של נתונים. אז תאר לעצמך לסרוק את כמות הנתונים העצומה הזו לאיזה שאילתה היכן 95% הנתונים שנסרקו על ידך לא היו רלוונטיים לשאילתה שלך.

הייתי מציע לך לעבור על הבלוג הלאה כוורות פקודות שם תמצאו דרכים שונות ליישום מחיצות עם דוגמא.

דליים:

פקודות:

צור טבלה שם שם מחולק לפי (partition1 data_type, partition2 data_type, & hellip.) CLUSTERED BY (column_name1, column_name2,…) Sortered by (column_name [ASC | DESC],…)] INTO_buckets BUCKETS

כעת, תוכלו לחלק כל מחיצה או טבלה לא מחולקת לדליים על סמך פונקציית החשיש של עמודה בטבלה. למעשה, כל דלי הוא רק קובץ בספריית המחיצות או בספריית הטבלה (טבלה לא מחולקת). לכן, אם בחרת לחלק את המחיצות ל- n דליים, יהיו לך n קבצים בכל ספריית המחיצות שלך. לדוגמא, אתה יכול לראות את התמונה שלעיל, שם שילבנו כל מחיצה לשני דליים. לכן, בכל מחיצה, נניח CSE, יהיו שני קבצים שבהם כל אחד מהם יאחסן את הנתונים של התלמיד CSE.

איך כוורת מחלקת את השורות לדליים?

ובכן, כוורת קובעת את מספר הדלי לשורה באמצעות הנוסחה: hash_function (bucketing_column) modulo (num_of_buckets) . הנה, חAsh_function תלוי בסוג נתוני העמודות. לדוגמא, אם אתה מכניס את הטבלה על בסיס עמודה כלשהי, נניח user_id, מסוג INT סוג, ה- hash_function תהיה - hash_function (user_id ) = ערך שלם של user_id . ונניח שיצרת שני דליים, אז כוורת תקבע את השורות שעוברות לדלי 1 בכל מחיצה על ידי חישוב: (ערך user_id) מודולו (2). לכן, במקרה זה, שורות שיש לה user_id המסתיימות בספרה שלמה אחידה ישוכנו באותה דלי המתאים לכל מחיצה. פונקציית ה- hash עבור סוגי נתונים אחרים היא מעט מורכבת לחישוב ולמעשה, עבור מחרוזת היא אפילו לא ניתנת לזיהוי אנושי.

הערה: אם אתה משתמש ב- Apache Hive 0.x או 1.x, עליך להוציא פקודה - הגדר hive.enforce.bucketing = true ממסוף Hive שלך ​​לפני ביצוע דליפה. זה יאפשר לך לקבל את המספר הנכון של המפחית בעת שימוש באשכול לפי סעיף לדליפת עמודה. אם לא עשית זאת, יתכן שמספר הקבצים שנוצרו בספריית הטבלה שלך אינו שווה למספר הדליים. כחלופה, תוכל גם להגדיר את מספר המפחית השווה למספר הדליים באמצעות set mapred.reduce.task = num_bucket.

מדוע אנו זקוקים לדליים?

ישנן שתי סיבות עיקריות לביצוע דליפות למחיצה:

  • ל צד הצטרפות למפה דורש שהנתונים השייכים למפתח הצטרפות ייחודי יהיו באותה מחיצה. אבל מה עם המקרים שבהם מפתח החלוקה שלך שונה מהצטרפות? לכן, במקרים אלה ניתן לבצע צירוף בצד המפה על ידי השבת הטבלה באמצעות מקש ההצטרפות.
  • Bucketing הופך את תהליך הדגימה ליעיל יותר ולכן מאפשר לנו להקטין את זמן השאילתה.

ברצוני לסיים את בלוג ההוראה של כוורת כאן. אני די בטוח שאחרי שעבר על הבלוג הזה של Hive, היית מבין את הפשטות של Apache Hive. מאז, אתם למדתם את כל יסודות הכוורתזה הזמן להגיע לניסיון עם Apache Hive. לכן, בדוק את הבלוג הבא בסדרת הבלוגים של Hive Tutorial שנמצאת בהתקנת Hive והתחל לעבוד על Apache Hive.

כעת, לאחר שהבנתם את Apache Hive ואת התכונות שלו, בדקו את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפזורים ברחבי העולם. קורס הכשרת ההסמכה של אדוריקה ביג דאטה Hadoop עוזר ללומדים להיות מומחים בתחום HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume ו- Sqoop תוך שימוש במקרי שימוש בזמן אמת בתחום הקמעונאות, מדיה חברתית, תעופה, תיירות, פיננסים.

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.