יצירה וניהול של מערכי נתונים מאוחדים ב-AWS Glue
מערך נתונים מאוחד משקף את הסכימה והטבלאות ממקור נתונים חיצוני, כך שהן מופיעות כטבלאות לקריאה בלבד במערך נתונים של BigQuery. אתם יכולים להשתמש במערך נתונים מאוחד כדרך יעילה לגשת לנתונים מ-AWS Glue ב-BigQuery.
לפני שמתחילים
מוודאים שיש לכם חיבור לנתוני AWS Glue.
כדי ליצור או לשנות חיבור, פועלים לפי ההוראות במאמר חיבור ל-Amazon S3. כשיוצרים את הקישור הזה, צריך לכלול את הצהרת המדיניות הבאה עבור AWS Glue במדיניות ניהול הזהויות והרשאות הגישה (IAM) של AWS ל-BigQuery. צריך לכלול את ההצהרה הזו בנוסף להרשאות האחרות בקטגוריית Amazon S3 שבה מאוחסנים הנתונים בטבלאות AWS Glue.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:GetPartitions" ], "Resource": [ "arn:aws:glue:REGION:ACCOUNT_ID:catalog", "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME", "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*" ] }
מחליפים את מה שכתוב בשדות הבאים:
-
REGION: האזור ב-AWS – לדוגמה,us-east-1 -
ACCOUNT_ID:: מזהה החשבון ב-AWS שמורכב מ-12 ספרות -
DATABASE_NAME: שם מסד הנתונים של AWS Glue
-
ההרשאות הנדרשות
כדי לקבל את ההרשאות שנדרשות ליצירת מערך נתונים מאוחד, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד BigQuery Admin (roles/bigquery.admin).
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות ליצירת מערך נתונים מאוחד. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור מערך נתונים מאוחד, צריך את ההרשאות הבאות:
-
bigquery.datasets.create -
bigquery.connections.use -
bigquery.connections.delegate
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
במאמר מבוא ל-IAM יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.
יצירת מערך נתונים מאוחד
כדי ליצור מערך נתונים מאוחד:
המסוף
פותחים את הדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, בוחרים את הפרויקט שבו רוצים ליצור את מערך הנתונים.
לוחצים על View actions (הצגת פעולות) ואז על Create dataset (יצירת מערך נתונים).
בדף Create dataset, מבצעים את הפעולות הבאות:
- בשדה Dataset ID, מזינים שם ייחודי למערך הנתונים.
- בקטע Location type, בוחרים מיקום ב-AWS לקבוצת הנתונים, למשל
aws-us-east-1. אחרי שיוצרים מערך נתונים, אי אפשר לשנות את המיקום שלו. בקטע External Dataset (מערך נתונים חיצוני), מבצעים את הפעולות הבאות:
- מסמנים את התיבה לצד קישור למערך נתונים חיצוני.
- בקטע External dataset type (סוג מערך נתונים חיצוני), בוחרים באפשרות
AWS Glue. - בשדה מקור חיצוני, מזינים
aws-glue://ואחריו את שם משאב Amazon (ARN) של מסד הנתונים של AWS Glue – לדוגמה,aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database. - בקטע מזהה החיבור, בוחרים את החיבור ל-AWS.
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על יצירת מערך נתונים.
SQL
משתמשים בהצהרת שפת הגדרת נתונים (DDL) של CREATE EXTERNAL SCHEMA.
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
CREATE EXTERNAL SCHEMA DATASET_NAME WITH CONNECTION PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME OPTIONS ( external_source = 'AWS_GLUE_SOURCE', location = 'LOCATION');
מחליפים את מה שכתוב בשדות הבאים:
-
DATASET_NAME: השם של מערך הנתונים החדש ב-BigQuery. PROJECT_ID: מזהה הפרויקט.-
CONNECTION_LOCATION: המיקום של החיבור ל-AWS, לדוגמהaws-us-east-1. -
CONNECTION_NAME: השם של החיבור ל-AWS. -
AWS_GLUE_SOURCE: שם המשאב ב-Amazon (ARN) של מסד הנתונים של AWS Glue, עם קידומת שמזהה את המקור – לדוגמה,aws-glue://arn:aws:glue:us-east-1:123456789:database/test_database. -
LOCATION: המיקום של מערך הנתונים החדש ב-BigQuery – למשל,aws-us-east-1. אחרי שיוצרים מערך נתונים, אי אפשר לשנות את המיקום שלו.
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
בסביבת שורת פקודה, יוצרים מערך נתונים באמצעות הפקודה bq mk:
bq --location=LOCATION mk --dataset \ --external_source aws-glue://AWS_GLUE_SOURCE \ --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \ DATASET_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום של מערך הנתונים החדש ב-BigQuery – למשל,aws-us-east-1. אחרי שיוצרים מערך נתונים, אי אפשר לשנות את המיקום שלו. אפשר להגדיר ערך מיקום שיוגדר כברירת מחדל באמצעות הקובץ.bigqueryrc. -
AWS_GLUE_SOURCE: שם המשאב ב-Amazon (ARN) של מסד הנתונים ב-AWS Glue – לדוגמה,arn:aws:glue:us-east-1:123456789:database/test_database. -
PROJECT_ID: מזהה הפרויקט ב-BigQuery. -
CONNECTION_LOCATION: המיקום של החיבור ל-AWS, לדוגמהaws-us-east-1. -
CONNECTION_NAME: השם של החיבור ל-AWS. -
DATASET_NAME: השם של מערך הנתונים החדש ב-BigQuery. כדי ליצור מערך נתונים בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא:PROJECT_ID:DATASET_NAME.
Terraform
משתמשים במשאב google_bigquery_dataset.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה נוצר מערך נתונים מאוחד של AWS Glue:
resource "google_bigquery_dataset" "dataset" { provider = google-beta dataset_id = "example_dataset" friendly_name = "test" description = "This is a test description." location = "aws-us-east-1" external_dataset_reference { external_source = "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database" connection = "projects/project/locations/aws-us-east-1/connections/connection" } }
כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
API
מפעילים את השיטה datasets.insert עם משאב של מערך נתונים מוגדר ועם השדה externalDatasetReference במסד הנתונים של AWS Glue.
הצגת רשימת הטבלאות במערך נתונים מאוחד
כדי לראות את רשימת הטבלאות שזמינות לשאילתה במערך הנתונים המאוחד, אפשר לעיין במאמר בנושא הצגת רשימה של מערכי נתונים.
קבלת מידע על טבלה
כדי לקבל מידע על הטבלאות במערך הנתונים המאוחד, כמו פרטי הסכימה, אפשר לעיין במאמר קבלת מידע על טבלאות.
שליטה בגישה לטבלאות
כדי לנהל את הגישה לטבלאות במערך הנתונים המאוחד, אפשר לעיין במאמר שליטה בגישה למשאבים באמצעות IAM.
Row-level security, column-level security ו-data masking נתמכים גם בטבלאות במערכי נתונים מאוחדים.
פעולות סכימה שעשויות לפסול מדיניות אבטחה, כמו מחיקת עמודה ב-AWS Glue, עלולות לגרום לכשל במשימות עד לעדכון המדיניות. בנוסף, אם מוחקים טבלה ב-AWS Glue ויוצרים אותה מחדש, מדיניות האבטחה לא חלה יותר על הטבלה שנוצרה מחדש.
שאילתות על נתונים ב-AWS Glue
הפעלת שאילתות על טבלאות במערכי נתונים מאוחדים זהה להפעלת שאילתות על טבלאות בכל מערך נתונים אחר ב-BigQuery.
אפשר לשלוח שאילתות לטבלאות של AWS Glue בפורמטים הבאים:
- CSV (דחוס ולא דחוס)
- JSON (דחוס ולא דחוס)
- Parquet
- ORC
- Avro
- Iceberg
- Delta Lake
פרטי מיפוי הטבלה
כל טבלה שמעניקים לה גישה במסד הנתונים של AWS Glue מופיעה כטבלה מקבילה במערך הנתונים של BigQuery.
פורמט
הפורמט של כל טבלה ב-BigQuery נקבע לפי השדות הבאים של טבלת AWS Glue המתאימה:
InputFormat(Table.StorageDescriptor.InputFormat)OutputFormat(Table.StorageDescriptor.OutputFormat)SerializationLib(Table.StorageDescriptor.SerdeInfo.SerializationLibrary)
החריג היחיד הוא טבלאות Iceberg, שבהן נעשה שימוש בשדה TableType
(Table.Parameters["table_type"]).
לדוגמה, טבלת AWS Glue עם השדות הבאים ממופה לטבלת ORC ב-BigQuery:
-
InputFormat="org.apache.hadoop.hive.ql.io.orc.OrcInputFormat" -
OutputFormat="org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat" -
SerializationLib="org.apache.hadoop.hive.ql.io.orc.OrcSerde"
מיקום
המיקום של כל טבלה ב-BigQuery נקבע לפי:
- טבלאות Iceberg: השדה
Table.Parameters["metadata_location"]בטבלת AWS Glue - טבלאות לא מחולקות למחיצות שאינן Iceberg: השדה
Table.StorageDescriptor.Locationבטבלת AWS Glue - טבלאות עם חלוקה למחיצות שאינן Iceberg: AWS Glue GetPartitions API
מלונות אחרים
בנוסף, חלק מהמאפיינים של טבלאות AWS Glue ממופים אוטומטית לאפשרויות ספציפיות לפורמט ב-BigQuery:
| אופן הלימוד | SerializationLib | ערך הטבלה של AWS Glue | אפשרות BigQuery |
|---|---|---|---|
| CSV | LazySimpleSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] | CsvOptions.fieldDelimiter |
| CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
| CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
| CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] | CsvOptions.fieldDelimiter |
| CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] | CsvOptions.quote |
| CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
| CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
| JSON | Hive JsonSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | JsonOptions.encoding |
יצירת תצוגה במערך נתונים מאוחד
אי אפשר ליצור תצוגה במערך נתונים מאוחד. עם זאת, אפשר ליצור תצוגה במערך נתונים רגיל שמבוססת על טבלה במערך נתונים מאוחד. מידע נוסף זמין במאמר יצירת תצוגות.
מחיקה של מערך נתונים מאוחד
מחיקה של מערך נתונים מאוחדת זהה למחיקה של כל מערך נתונים אחר ב-BigQuery. מידע נוסף זמין במאמר מחיקת מערכי נתונים.
תמחור
מידע על התמחור זמין במאמר בנושא תמחור BigQuery Omni.
מגבלות
- כל המגבלות של BigQuery Omni חלות.
- אי אפשר להוסיף, למחוק או לעדכן נתונים או מטא-נתונים בטבלאות במערך נתונים מאוחד של AWS Glue.
- אי אפשר ליצור טבלאות, תצוגות או תצוגות חומריות חדשות במערך נתונים מאוחד של AWS Glue.
- אין תמיכה ב
INFORMATION_SCHEMAתצוגות. - אין תמיכה בשמירת מטא-נתונים במטמון.
- הגדרות ברמת מערך הנתונים שקשורות לברירות המחדל של יצירת טבלאות לא משפיעות על מערכי נתונים מאוחדים, כי אי אפשר ליצור טבלאות באופן ידני.
- סוג הנתונים
UNIONשל Apache Hive לא נתמך בטבלאות Avro. - חלות ההגבלות על טבלאות חיצוניות.
המאמרים הבאים
- מידע נוסף על BigQuery Omni
- אפשר לנסות את BigQuery Omni עם AWS lab.