ניהול נתונים שחולקו למחיצות ב-Hive באופן חיצוני
אתם יכולים להשתמש בטבלאות חיצוניות ב-BigQuery כדי להריץ שאילתות על נתונים מחולקים במאגרי הנתונים הבאים:
הנתונים שחולקו למחיצות באופן חיצוני צריכים להיות בפריסת חלוקה למחיצות של Hive כברירת מחדל ובאחד מהפורמטים הבאים:
- Avro
- CSV
- JSON
- ORC
- Parquet
כדי להריץ שאילתות על נתונים שחולקו למחיצות באופן חיצוני, צריך ליצור טבלת BigLake או טבלה חיצונית. מומלץ להשתמש בטבלאות BigLake כי הן מאפשרות לאכוף אבטחה ברמה גבוהה ברמת הטבלה. מידע על BigLake ועל טבלאות חיצוניות זמין במאמרים מבוא לטבלאות BigLake ומבוא לטבלאות חיצוניות.
כדי להפעיל תמיכה בחלוקה למחיצות ב-Hive, צריך להגדיר את האפשרויות המתאימות בקובץ הגדרת הטבלה. הוראות לשליחת שאילתות לטבלאות מנוהלות מחולקות למחיצות מפורטות במאמר מבוא לטבלאות מחולקות למחיצות.
סכימת חלוקה למחיצות
בקטעים הבאים מוסבר על פריסת ברירת המחדל של Hive עם חלוקה למחיצות ועל מצבי זיהוי הסכימה שנתמכים ב-BigQuery.
כדי להימנע מקריאת קבצים מיותרים ולשפר את הביצועים, אפשר להשתמש במסנני תנאים במפתחות של מחיצות בשאילתות.
פריסות נתונים נתמכות
מפתחות של מחיצות ב-Hive מופיעים כעמודות רגילות כשמבצעים שאילתה על נתונים מ-Cloud Storage. הנתונים צריכים להיות בפריסה מחולקת למחיצות של Hive כברירת מחדל. לדוגמה, הקבצים הבאים תואמים לפריסת ברירת המחדל – צמדי המפתח/ערך מוגדרים כספריות עם סימן שווה (=) כמפריד, ומפתחות המחיצה תמיד באותו סדר:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename
התחילית הנפוצה של URI המקור בדוגמה הזו היא gs://my_bucket/my_table.
פריסות נתונים שלא נתמכות
אם שמות מפתחות החלוקה לא מקודדים בנתיב הספרייה, זיהוי סכימת החלוקה ייכשל. לדוגמה, נבחן את הנתיב הבא, שבו שמות מפתחות החלוקה לא מוצפנים:
gs://my_bucket/my_table/2019-10-31/en/my_filename
גם קבצים שבהם הסכימה לא מסודרת באופן עקבי לא מזוהים. לדוגמה, נניח שיש שני קבצים עם קידודים הפוכים של מפתח המחיצה:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename
מצבי זיהוי
BigQuery תומך בשלושה מצבים של זיהוי סכימת מחיצות של Hive:
AUTO: שמות המפתחות והסוגים שלהם מזוהים באופן אוטומטי. אפשר לזהות את הסוגים הבאים:
STRINGS: שמות המפתחות מומרים אוטומטית לסוגSTRING.
CUSTOM: סכימת מפתח המחיצה מקודדת כפי שמצוין בקידומת של ה-URI של המקור.
סכימה של מפתח מחיצה בהתאמה אישית
כדי להשתמש בסכימת CUSTOM, צריך לציין את הסכימה בשדה של קידומת URI המקור. שימוש בסכימה CUSTOM מאפשר לציין את הסוג של כל מפתח מחיצה.
הערכים צריכים להיות ניתנים לניתוח כסוג שצוין, אחרת השאילתה תיכשל.
לדוגמה, אם מגדירים את הדגל source_uri_prefix לערך gs://my_bucket/my_table/{dt:DATE}/{val:STRING}, BigQuery מתייחס ל-val כמחרוזת, ל-dt כתאריך ומשתמש ב-gs://my_bucket/my_table כקידומת של URI המקור לקבצים התואמים.
גיזום מחיצות
המערכת של BigQuery מקצצת מחיצות כשזה אפשרי באמצעות פרדיקטים של שאילתות במפתחות המחיצות. כך BigQuery לא יצטרך לקרוא קבצים מיותרים, והביצועים ישתפרו.
מסנני פרדיקטים במפתחות של מחיצות בשאילתות
כשיוצרים טבלה עם מחיצות חיצוניות, אפשר לדרוש שימוש במסנני פרדיקטים במפתחות מחיצות על ידי הפעלת האפשרות requirePartitionFilter
בקטע HivePartitioningOptions.
כשהאפשרות הזו מופעלת, ניסיונות לשלוח שאילתה לטבלה עם חלוקה חיצונית ללא ציון של פסקה WHERE יגרמו לשגיאה הבאה:
Cannot query over table <table_name> without a filter over column(s)
<partition key names> that can be used for partition elimination.
מגבלות
- התמיכה בחלוקה למחיצות ב-Hive מובנית בהנחה שיש קידומת URI משותפת לכל ה-URI שמסתיימים מיד לפני קידוד המחיצה, באופן הבא:
gs://BUCKET/PATH_TO_TABLE/. - מניחים שמבנה הספריות של טבלה עם חלוקה למחיצות ב-Hive כולל את אותם מפתחות חלוקה למחיצות באותו סדר, עם עד עשרה מפתחות חלוקה למחיצות לכל טבלה.
- הנתונים צריכים להיות בפורמט של פריסת מחיצות של Hive כברירת מחדל.
- מפתחות החלוקה למחיצות ב-Hive והעמודות בקבצים הבסיסיים לא יכולים להיות זהים.
התמיכה מיועדת ל-GoogleSQL בלבד.
חלות כל המגבלות על שאילתות של מקורות נתונים חיצוניים שמאוחסנים ב-Cloud Storage.