חיבור ל-Apache Spark
חיבור של Apache Spark ב-BigQuery מאפשר למשתמשים לחבר את BigQuery ל-Managed Service for Apache Spark כדי להריץ פרוצדורות מאוחסנות ב-Apache Spark. אתם יכולים ליצור את החיבור הזה, לתת את ההרשאות הנדרשות לחשבון השירות שלו ולשתף את החיבור עם משתמשים.
לפני שמתחילים
מפעילים את BigQuery Connection API.
-
כדי לקבל את ההרשאות שנדרשות ליצירת חיבור ל-Spark, צריך לבקש מהאדמין להקצות לכם את התפקיד אדמין של חיבורי BigQuery (
roles/bigquery.connectionAdmin) ב-IAM בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- אופציונלי: כדי לנהל את המטא-נתונים באמצעות Dataproc Metastore, ודאו שיצרתם שירות Dataproc Metastore.
- אופציונלי: כדי לצפות בהיסטוריית המשימות באמצעות ממשקי האינטרנט של שרת ההיסטוריה של Spark, ודאו שיצרתם שרת היסטוריה קבוע (PHS) של Managed Service for Apache Spark.
שיקולים בקשר למיקום
כשבוחרים מיקום לאחסון הנתונים, כדאי להביא בחשבון את הנקודות הבאות:
במספר אזורים
צריך לציין משאבים ב- Google Cloud שנמצאים באותו אזור גיאוגרפי גדול:
חיבור ב-BigQuery במספר אזורים בארה"ב יכול להפנות ל-Spark History Server או ל-Dataproc Metastore בכל אזור באזור הגיאוגרפי של ארה"ב, כמו
us-central1,us-east4אוus-west2.חיבור ב-BigQuery במספר אזורים באיחוד האירופי יכול להפנות לשרת Spark History או ל-Dataproc Metastore במדינות החברות באיחוד האירופי, כמו
europe-north1אוeurope-west3.
אזורים בודדים
חיבור באזור אחד יכול להפנות רק למשאבי Google Cloudבאותו אזור. לדוגמה, חיבור באזור היחיד us-east4 יכול להפנות רק לשרת Spark History או ל-Dataproc Metastore ב-us-east4.
יצירת חיבורים
בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery.
בחלונית נתונים, לוחצים על הוספת נתונים.
תיבת הדו-שיח Add data נפתחת.
בחלונית סינון לפי, בקטע סוג מקור הנתונים, בוחרים באפשרות אפליקציות עסקיות.
אפשר גם להזין
Sparkבשדה Search for data sources.בקטע Featured data sources, לוחצים על Apache Spark.
לוחצים על כרטיס הפתרון Apache Spark: BigQuery Federation.
בחלונית External data source, מזינים את הפרטים הבאים:
ברשימה Connection type, בוחרים באפשרות Apache Spark.
בשדה Connection ID, מזינים שם לחיבור, לדוגמה
spark_connection.ברשימה מיקום הנתונים, בוחרים אזור.
אפשר ליצור חיבור באזורים ובמספר אזורים שתומכים ב-BigQuery. מידע נוסף זמין במאמר שיקולים לגבי מיקום.
אופציונלי: ברשימה Metastore service, בוחרים Dataproc Metastore.
אופציונלי: בשדה History server cluster, מזינים שרת היסטוריה קבוע של Managed Service for Apache Spark.
לוחצים על יצירת חיבור.
לוחצים על מעבר לחיבור.
בחלונית Connection info, מעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב הבא.
BQ
בסביבה של שורת הפקודה, משתמשים בפקודה
bq mkכדי ליצור חיבור:bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
מחליפים את מה שכתוב בשדות הבאים:
PROPERTIES: צמד מפתח/ערך שמספק פרמטרים ספציפיים לחיבור בפורמט JSONלדוגמה:
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "MANAGED_SERVICE_FOR_APACHE_SPARK_CLUSTER_NAME"} }'מחליפים את מה שכתוב בשדות הבאים:
METASTORE_SERVICE_NAME: Dataproc Metastore עם הגדרת רשת gRPC, לדוגמהprojects/my-project-id/locations/us-central1/services/my-serviceלמידע נוסף, קראו איך לגשת למטא-נתונים של Hive metastore שמאוחסנים באמצעות פרוטוקול נקודת קצה (endpoint).
MANAGED_SERVICE_FOR_APACHE_SPARK_CLUSTER_NAME: ההגדרה של Spark History Server, לדוגמה:projects/my-project-id/regions/us-central1/clusters/my-clusterמידע נוסף זמין במאמר יצירת אשכול Persistent History Server.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud
LOCATION: המיקום שבו רוצים לאחסן את החיבור, לדוגמהUS
CONNECTION_ID: מזהה החיבור, לדוגמהmyconnectionכשמציגים את פרטי החיבור במסוף Google Cloud , מזהה החיבור הוא הערך בחלק האחרון של מזהה החיבור המלא שמוצג ב-Connection ID, לדוגמה
projects/.../locations/.../connections/myconnection.
מאחזרים ומעתיקים את מזהה חשבון השירות כי צריך אותו בשלב אחר:
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
הפלט אמור להיראות כך:
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example."}
במאמר ניהול חיבורים מוסבר איך מנהלים את החיבורים.
מתן גישה לחשבון השירות
כדי לאפשר לפרוצדורה מאוחסנת של Apache Spark לגשת למשאבים שלכם ב- Google Cloud, אתם צריכים לתת לחשבון השירות שמשויך לחיבור של הפרוצדורה המאוחסנת את הרשאות ה-IAM הנדרשות. לחלופין, אתם יכולים להשתמש בחשבון שירות בהתאמה אישית כדי לגשת לנתונים.
כדי לקרוא נתונים מ-BigQuery ולכתוב נתונים ל-BigQuery, צריך לתת לחשבון השירות את הרשאות ה-IAM הבאות:
-
bigquery.tables.*בטבלאות ב-BigQuery -
bigquery.readsessions.*בפרויקט
תפקיד ה-IAM
roles/bigquery.adminכולל את ההרשאות שחשבון השירות צריך כדי לקרוא נתונים מ-BigQuery ולכתוב נתונים ל-BigQuery.-
כדי לקרוא ולכתוב נתונים מ-Cloud Storage ואליו, צריך לתת לחשבון השירות את ההרשאה
storage.objects.*באובייקטים של Cloud Storage.תפקיד ה-IAM
roles/storage.objectAdminכולל את ההרשאות שחשבון השירות צריך כדי לקרוא נתונים מ-Cloud Storage ולכתוב נתונים ל-Cloud Storage.אם אתם מציינים את Dataproc Metastore כשאתם יוצרים חיבור, כדי ש-BigQuery יוכל לאחזר פרטים על הגדרת המטא-חנות, אתם צריכים לתת לחשבון השירות את ההרשאה
metastore.services.getב-Dataproc Metastore.התפקיד המוגדר מראש
roles/metastore.metadataViewerכולל את ההרשאה שחשבון השירות צריך כדי לאחזר פרטים על ההגדרות של המטא-נתונים.אתם גם צריכים לתת לחשבון השירות את התפקיד
roles/storage.objectAdminבקטגוריה של Cloud Storage, כדי שהפרוצדורה המאוחסנת תוכל לגשת לספריית המחסן של Hive ב-Dataproc Metastore (hive.metastore.warehouse.dir). אם הפרוצדורה המאוחסנת מבצעת פעולות במטא-נתונים, יכול להיות שתצטרכו לתת הרשאות נוספות. במאמר תפקידים והרשאות מוגדרים מראש ב-Dataproc Metastore תוכלו לקרוא מידע נוסף על התפקידים וההרשאות ב-IAM ב-Dataproc Metastore.אם אתם מציינים שרת היסטוריה קבוע של Managed Service for Apache Spark כשאתם יוצרים חיבור, אתם צריכים להקצות לחשבון השירות את התפקידים הבאים:
- התפקיד
roles/dataproc.viewerבשרת ההיסטוריה הקבוע של Managed Service for Apache Spark, שמכיל את ההרשאהdataproc.clusters.get. - התפקיד
roles/storage.objectAdminבקטגוריה של Cloud Storage שאתם מציינים במאפייןspark:spark.history.fs.logDirectoryכשאתם יוצרים את Managed Service for Apache Spark Persistent History Server.
מידע נוסף זמין במאמרים שרת היסטוריה קבוע ב-Managed Service for Apache Spark ותפקידים והרשאות ב-Managed Service for Apache Spark.
- התפקיד
שיתוף חיבורים עם משתמשים
כדי לאפשר למשתמשים לשלוח שאילתות לגבי נתונים ולנהל חיבורים, אתם יכולים להקצות את התפקידים הבאים:
roles/bigquery.connectionUser: מאפשרת למשתמשים להשתמש בחיבורים כדי להתחבר למקורות נתונים חיצוניים ולהריץ עליהם שאילתות.
roles/bigquery.connectionAdmin: מאפשר למשתמשים לנהל חיבורים.
במאמר תפקידים והרשאות מוגדרים מראש תוכלו לקרוא מידע נוסף על תפקידים והרשאות של IAM ב-BigQuery.
בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery.
החיבורים מופיעים בפרויקט בקבוצה שנקראת Connections.
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
לוחצים על הפרויקט, לוחצים על Connections ובוחרים חיבור.
בחלונית פרטים, לוחצים על שיתוף כדי לשתף חיבור. לאחר מכן מבצעים את הפעולות הבאות:
בתיבת הדו-שיח Connection permissions, משתפים את החיבור עם חשבונות משתמשים אחרים על ידי הוספה או עריכה של חשבונות משתמשים.
לוחצים על Save.
BQ
אי אפשר לשתף חיבור באמצעות כלי שורת הפקודה של BigQuery. כדי לשתף חיבור, משתמשים במסוף Google Cloud או ב-BigQuery Connections API.
API
משתמשים בשיטה projects.locations.connections.setIAM בקטע של מאמרי העזרה של BigQuery Connections REST API, ומספקים מופע של המשאב policy.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.