בדף הזה מוסבר איך להשתמש בממשק האדמין של Dataproc Metastore.
ממשק האדמין מספק כלי מרכזי לבדיקה ולניהול של המטא-נתונים שמאוחסנים בשירות Dataproc Metastore, בלי שתצטרכו להתחבר לאשכול Dataproc או למופע Hive. במקום זאת, אפשר לנהל את המטא-נתונים באמצעות Google Cloud CLI או ממשקי API של Dataproc Metastore.
לדוגמה, באמצעות ממשק האדמין, אתם יכולים להריץ שאילתת SQL ישירות במטא-נתונים של ה-Backend כדי לאחזר שם טבלה ספציפי. התהליך הזה כולל פחות שלבים מאשר תהליך העבודה הרגיל, כמו יצירת אשכול Dataproc, התחברות לאשכול באמצעות SSH, הפעלת מופע Hive ואז הפעלת שאילתה (לדוגמה, SELECT * FROM table_name).
כתוצאה מכך, ממשק האדמין יכול לעזור לכם לחסוך זמן ולצמצם את כמות המשאבים שנדרשים לשליפת הנתונים. Google Cloud
לפני שמתחילים
- מפעילים את Dataproc Metastore בפרויקט.
- יוצרים שירות Dataproc Metastore.
- ייבוא מטא-נתונים אל Dataproc Metastore
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לשימוש בממשק האדמין של Dataproc Metastore, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט, בהתאם לעיקרון של הרשאות מינימליות:
-
כדי לשלוח שאילתות למטא-נתונים של Dataproc Metastore:
התפקיד 'אדמין של שאילתות מטא-נתונים' (
roles/metastore.metadataQueryAdmin) בחשבון המשתמש או בחשבון השירות -
כדי לשנות את מיקום המשאב של המטא-נתונים, כולל מסדי נתונים, טבלאות ומחיצות, או להעביר טבלה למסד נתונים אחר:
-
אדמין של שינוי מטא-נתונים (
roles/metastore.metadataMutateAdmin) בחשבון המשתמש או בחשבון השירות -
התפקיד 'עורך של Dataproc Metastore' (
roles/metastore.editor) בחשבון המשתמש או בחשבון השירות
-
אדמין של שינוי מטא-נתונים (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לשימוש בממשק האדמין של Dataproc Metastore. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להשתמש בממשק האדמין של Dataproc Metastore, נדרשות ההרשאות הבאות:
-
כדי לשלוח שאילתה למטא-נתונים של Dataproc Metastore:
metastore.services.queryMetadata -
כדי לשנות או להעביר טבלאות של Dataproc Metastore:
metastore.services.mutateMetadata
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
במאמר סקירה כללית על ניהול זהויות והרשאות גישה (IAM) ב-Dataproc Metastore יש מידע נוסף על תפקידים והרשאות ספציפיים ב-Dataproc Metastore.פעולות אדמין נתמכות
אפשר להריץ פעולות בממשק האדמין רק באמצעות ה-CLI של gcloud או ממשקי ה-API של Dataproc Metastore. פעולות בממשק האדמין לא נתמכות במסוף Google Cloud .
ממשק האדמין תומך בפעולות הבאות.
פעולות לקריאה בלבד.
- שאילתות לקבלת מטא-נתונים.
פעולות קריאה וכתיבה.
- לשנות את מיקום המשאב של המטא-נתונים, כולל מסדי נתונים, טבלאות ומחיצות.
- שינוי מאפייני הטבלה, כמו צמדים מותאמים אישית של מפתח/ערך.
- להעביר טבלה למסד נתונים אחר.
אם ממשק האדמין לא תומך בפעולה אחרת, אפשר להריץ שאילתה ישירות במאגר המטא-נתונים של Hive.
לדוגמה, כדי להציג רשימה של כל הטבלאות במופע Dataproc Metastore, אפשר לשלוח שאילתה ישירות לסכימת Hive metastore. במקרה כזה, אפשר להריץ את הפקודה select * from TBLS כדי להציג רשימה של כל הטבלאות שמאוחסנות בשירות.
שאילתות למטא-נתונים
הפעולה הזו מאפשרת לכם לחפש מידע על מטא-נתונים במסד הנתונים באמצעות שאילתות SQL. אחרי שמריצים שאילתה, התוצאות מוצגות במאגר Google Cloud הפריטים.
לפני שמריצים את הפעולה הזו, חשוב לשים לב לשיקולים הבאים:
- הפעולות הנתמכות כוללות רק שאילתות של
read-onlyMySQL או Spanner. אם השאילתה מנסה לשנות את הנתונים, הפעולה נכשלת. - קובץ הפלט מכיל עד 1,000 שורות. אי אפשר לשנות את ההגדרה הזו.
קבצי הפלט לא נמחקים באופן אוטומטי. במקום זאת, תצטרכו למחוק אותם ידנית ממאגר Google Cloud . אם לא תמחקו אותם, יכול להיות שתחויבו בעלויות נוספות על אחסון.
CLI של gcloud
כדי לשלוח שאילתה למטא-נתונים, מריצים את הפקודה הבאה של
gcloud metastore services query-metadata:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור Google Cloud שבו נמצא שירות Dataproc Metastore. -
QUERY: שאילתת ה-SQL לטירגוט המטא-נתונים.- אם אתם משתמשים במסד נתונים של MySQL, אתם יכולים להשתמש בשאילתת MySQL רגילה.
- אם אתם משתמשים במסד נתונים של Spanner, אתם צריכים להשתמש בשאילתת GoogleSQL.
-
אפשר לראות את קובץ הפלט במאגר הפריטים Google Cloud .
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-X POST -d '{"query": "QUERY"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:queryMetadata
מחליפים את מה שכתוב בשדות הבאים:
-
QUERY: שאילתת ה-SQL שבה אתם משתמשים כדי לטרגט את המטא-נתונים.- אם אתם משתמשים במסד נתונים של MySQL, אתם יכולים להשתמש בשאילתת MySQL רגילה.
- אם אתם משתמשים במסד נתונים של Spanner, אתם צריכים להשתמש בשאילתת GoogleSQL.
-
PROJECT_ID: מזהה הפרויקט שבו נמצא שירות Dataproc Metastore. Google Cloud -
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור שבו נמצא Dataproc Metastore.
בדוגמה הבאה מוצגת פקודה לדוגמה שמריצה שאילתת select * ממסד נתונים בשם DBS.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" -X POST -d '{"query": "select * from DBS;"}' \
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:queryMetadata
הסבר על הפלט של פעולת מטא-נתונים של שאילתה
כשמריצים בפעם הראשונה פקודה של מטא-נתונים של שאילתה, Dataproc Metastore יוצר אוטומטית Google Cloud תיקייה בדלי של הארטיפקטים Google Cloud .
השם של התיקייה הזו הוא query-results. אחרי כל הרצה מוצלחת של שאילתה (קריאה ל-API),
נוצרת תיקייה חדשה בתוך התיקייה query-results (ששמה הוא UUID שנוצר באופן אקראי).
כל תיקייה חדשה מכילה קובץ result manifest עם תוצאות השאילתה. המיקום של התיקייה הזו מוחזר בתגובה לקריאה ל-API.
לדוגמה, בשדה resultManifestUri של התשובה מופיע המיקום של הקובץ.
"response": {
"@type": "type.googleapis.com/google.cloud.metastore.QueryMetadataResponse",
"resultManifestUri": "gs://gcs-bucket-6a3638b8-e319-46363-ad33-e632a5e/query-results/800156f5-2d13-4b80-bec3-2345a9e880f6/result-manifest"
}
הפלט של הקובץ result manifest אמור להיראות כך:
{
"status": {
"code": 0,
"message": "Query results are successfully uploaded to cloud storage",
"details": []
},
"filenames": ["result-001"]
}
פרטי קובץ המניפסט של התוצאה:
- השדה
statusמראה אם השאילתה הצליחה או נכשלה. - אם ביצוע השאילתה יצליח, בשדה
filenamesיופיעו כל הקבצים שנוצרו. הקבצים האלה נמצאים באותה תיקייה כמו קובץresult manifest. - אם השאילתה נכשלה, הודעת השגיאה מופיעה בשדה
details.
שינוי מיקום המשאב של המטא-נתונים
הפעולה הזו מאפשרת לשנות את מיקום המשאב של מסד נתונים, טבלה או מחיצה.
כשמריצים את הפקודה הזו, היא מעדכנת רק את ספריית ההורה או את משאב המטא-נתונים הרלוונטי. הפקודה הזו לא מעבירה נתונים קיימים למיקום החדש.
CLI של gcloud
כדי לשנות את מיקום המשאב של המטא-נתונים, מריצים את הפקודה הבאה
gcloud metastore services alter-metadata-resource-location:gcloud metastore services alter-metadata-resource-location SERVICE \ --location=LOCATION \ --resource_name=RESOURCE_NAME \ --location_uri=LOCATION_URI
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור Google Cloud שבו נמצא שירות Dataproc Metastore. -
RESOURCE_NAME: השם של מסד הנתונים, הטבלה או המחיצה שרוצים לשנות. -
LOCATION_URI: נתיב Cloud Storage חדש לתוכן שלRESOURCE_NAME. הערך הזה הוא הנתיב שאליו אתם מעבירים את מיקום משאב המטא-נתונים. הנתיב הזה חייב להתחיל ב-gs://. לדוגמה,gs://bucket/object.
-
מוודאים שהשינוי במיקום המשאב בוצע בהצלחה.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"resource_name": "RESOURCE_NAME", "location_uri":"LOCATION_URI"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterLocation
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו נמצא שירות Dataproc Metastore. Google Cloud -
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור שבו נמצא Dataproc Metastore. -
RESOURCE_NAME: השם של מסד הנתונים, הטבלה או המחיצה שרוצים לשנות. -
LOCATION_URI: נתיב Cloud Storage חדש לתוכן שלRESOURCE_NAME. הערך הזה הוא הנתיב שאליו אתם מעבירים את מיקום משאב המטא-נתונים. הנתיב הזה חייב להתחיל ב-gs://. לדוגמה,gs://bucket/object.
בדוגמה הבאה מוצגת פקודה לדוגמה להעברת טבלה בשם test-table2 לקטגוריה של Cloud Storage חדשה.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST -d '{"resource_name": "databases/testdb1/tables/test-table2",
"location_uri":"gs://gcs-bucket-dpms1-9425bd83-b794-4f1c-9e79-2d833f758cc1/empty"}'
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:alterLocation
שינוי מאפייני הטבלה
הפעולה הזו מאפשרת לשנות את המאפיינים של טבלה, כמו צמד מפתח/ערך מותאם אישית שמשמש לאחסון נתונים. לדוגמה, אפשר לשנות צמד מפתח/ערך של properties.customerID_1 ל-properties.customerID_2.
CLI של gcloud
כדי לשנות את המאפיינים של טבלה, מריצים את הפקודה הבאה של
gcloud metastore services alter-table-properties:gcloud metastore services alter-table-properties SERVICE \ --location=LOCATION \ --table-name=TABLE_NAME \ --update-mask=UPDATE_MASK \ --properties=PROPERTIES
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור Google Cloud שבו נמצא שירות Dataproc Metastore. -
TABLE_NAME: שם הטבלה שמכילה את המאפיינים שמשנים, בפורמט הבא:databases/{database_id}/tables/{table_id}. -
UPDATE_MASK: ערכי המאפיינים הקיימים שאתם מעדכנים. כדי לתאר את צמדי המפתח/ערך, משתמשים ברשימה שבה הערכים מופרדים בפסיקים, לדוגמה:properties.1,properties.2,properties.3,.... -
PROPERTIES: המאפיינים החדשים של הטבלה. משתמשים ברשימה מופרדת בפסיקים כדי לתאר את צמדי המפתח/הערך. לדוגמה,a=1,b=2,c=3,.... הערכים שמציינים כאן מחליפים את הערכים ב-UPDATE_MASK.
-
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "update_mask":"UPDATE_MASK", "properties":PROPERTIES}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterTableProperties
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור Google Cloud שבו נמצא שירות Dataproc Metastore. -
TABLE_NAME: שם הטבלה שמכילה את המאפיינים שמשנים, בפורמט הבא:databases/{database_id}/tables/{table_id}. -
UPDATE_MASK: ערכי המאפיינים הקיימים שאתם מעדכנים. כדי לתאר את צמדי המפתח/ערך, משתמשים ברשימה שבה הערכים מופרדים בפסיקים, לדוגמה:properties.1,properties.2,properties.3,.... -
PROPERTIES: המאפיינים החדשים של הטבלה. כדי לתאר את צמדי המפתח/ערך, משתמשים ברשימה שבה הערכים מופרדים בפסיקים, לדוגמה:a=1,b=2,c=3,.... הערכים שמופיעים כאן מחליפים את הערכים ב-UPDATE_MASK.
בדוגמה הבאה מוצגת פקודה לדוגמה שמשנה את מאפייני הטבלה של טבלה בשם test-table. בדוגמה הזו, הצמד הקיים של מפתח/ערך,
properties.customerID_1 מתעדכן לערך החדש properties.customerID_2
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "databases/default/tables/test-table", "update_mask":{"paths":"properties.customerID_1"}, "properties":{"customerID_1":"customerID_2"}}' https://metastore.googleapis.com/projects/dpms-p
העברת טבלה למסד נתונים אחר
הפעולה הזו מאפשרת להעביר טבלה פנימית (טבלה מנוהלת) למסד נתונים אחר. במקרה כזה, גם ספריית האב של מסד הנתונים וגם הנתונים שלה מועברים.
אי אפשר להעביר נתונים שמאוחסנים בטבלאות חיצוניות.
CLI של gcloud
כדי להעביר טבלה למסד נתונים אחר, מריצים את הפקודה
gcloud metastore services move-table-to-databaseהבאה:gcloud metastore services move-table-to-database SERVICE \ --location=LOCATION \ --db_name=DB_NAME \ --table_name=TABLE_NAME \ --destination_db_name=DESTINATION_DB_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור שבו נמצא שירות Dataproc Metastore. Google Cloud -
DB_NAME: השם של מסד הנתונים של המקור שמכיל את הטבלה שרוצים להעביר. -
TABLE_NAME: שם הטבלה שרוצים להעביר. -
DESTINATION_DB_NAME: השם של מסד הנתונים החדש שאליו רוצים להעביר את הטבלה.
-
מוודאים שהשינוי בטבלה בוצע בהצלחה.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "db_name": "DB_NAME", "destination_db_name": "DESTINATION_DB_NAME"}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:moveTableToDatabase
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו נמצא שירות Dataproc Metastore. Google Cloud -
SERVICE: השם של שירות Dataproc Metastore. -
LOCATION: האזור שבו נמצא Dataproc Metastore. -
DB_NAME: השם של מסד הנתונים של המקור שמכיל את הטבלה שרוצים להעביר. -
TABLE_NAME: שם הטבלה שרוצים להעביר. -
DESTINATION_DB_NAME: השם של מסד הנתונים החדש שאליו רוצים להעביר את הטבלה.
בדוגמה הבאה מוצגת פקודה לדוגמה להעברת מסד נתונים בשם testdb1 למסד נתונים אחר בשם testdb2.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "testtb1", "db_name": "testdb1",
"destination_db_name": "testdb2"}' https://metastore.googleapis.com/projects/dpms/locations/asia-northeast2/services/dpms1:moveTableToDatabase