חיבור ל-Apache Spark
בתור אדמינים ב-BigQuery, אתם יכולים ליצור חיבור כדי לאפשר למנתחי נתונים להפעיל פרוצדורות מאוחסנות עבור Apache Spark.
לפני שמתחילים
מפעילים את BigQuery Connection API.
-
כדי לקבל את ההרשאות שנדרשות ליצירת חיבור Spark, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של חיבור BigQuery (
roles/bigquery.connectionAdmin) בפרויקט. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- אופציונלי: כדי לנהל את המטא-נתונים באמצעות Dataproc Metastore, צריך לוודא שיצרתם שירות Dataproc Metastore.
- אופציונלי: כדי לראות את היסטוריית העבודות באמצעות ממשקי אינטרנט של Spark History Server, צריך לוודא שיצרתם Dataproc Persistent History Server (PHS).
שיקולים בקשר למיקום
כשבוחרים מיקום לאחסון הנתונים, כדאי להביא בחשבון את הנקודות הבאות:
במספר אזורים
צריך לציין משאבים שנמצאים באותו אזור גיאוגרפי גדול: Google Cloud
חיבור באזור מרובה בארה"ב ב-BigQuery יכול להפנות אל Spark History Server או אל Dataproc Metastore בכל אזור יחיד באזור הגיאוגרפי של ארה"ב, כמו
us-central1,us-east4אוus-west2.חיבור ב-BigQuery במספר אזורים באיחוד האירופי יכול להפנות ל-Spark History Server או ל-Dataproc Metastore במדינות חברות באיחוד האירופי, כמו
europe-north1אוeurope-west3.
אזורים יחידים
חיבור באזור יחיד יכול להתייחס רק למשאבים באותו אזור. Google Cloud
לדוגמה, חיבור באזור יחיד us-east4 יכול להפנות רק ל-Spark History Server או ל-Dataproc Metastore ב-us-east4.
יצירת חיבורים
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על Add data.
תיבת הדו-שיח הוספת נתונים נפתחת.
בחלונית Filter By, בקטע Data Source Type, בוחרים באפשרות Business Applications.
אפשרות אחרת היא להזין
Sparkבשדה חיפוש מקורות נתונים.בקטע מקורות נתונים מומלצים, לוחצים על Apache Spark.
לוחצים על כרטיס הפתרון Apache Spark: BigQuery Federation.
בחלונית מקור נתונים חיצוני, מזינים את הפרטים הבאים:
ברשימה סוג החיבור, בוחרים באפשרות Apache Spark.
בשדה מזהה החיבור, מזינים שם לחיבור – לדוגמה,
spark_connection.ברשימה מיקום הנתונים, בוחרים אזור.
אפשר ליצור חיבור באזורים ובאזורים מרובים שבהם יש תמיכה ב-BigQuery. מידע נוסף זמין במאמר שיקולים לגבי מיקום.
אופציונלי: ברשימה Metastore service, בוחרים באפשרות Dataproc Metastore.
אופציונלי: בשדה History server cluster (אשכול שרת היסטוריה), מזינים Dataproc Persistent History Server (שרת היסטוריה מתמשך של Dataproc).
לוחצים על יצירת קישור.
לוחצים על מעבר לחיבור.
בחלונית 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": "DATAPROC_CLUSTER_NAME"} }'מחליפים את מה שכתוב בשדות הבאים:
METASTORE_SERVICE_NAME: Dataproc Metastore עם הגדרת רשת gRPC – לדוגמה,projects/my-project-id/locations/us-central1/services/my-serviceמידע נוסף זמין במאמר בנושא גישה למטא-נתונים של Hive metastore באמצעות פרוטוקול נקודת קצה.
DATAPROC_CLUSTER_NAME: הגדרת Spark History Server. לדוגמה:projects/my-project-id/regions/us-central1/clusters/my-clusterמידע נוסף זמין במאמר בנושא יצירת אשכול של שרת היסטוריה מתמשך.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud
LOCATION: המיקום שבו רוצים לאחסן את החיבור, לדוגמה:US
CONNECTION_ID: מזהה החיבור, לדוגמהmyconnectionכשמציגים את פרטי החיבור במסוף Google Cloud , מזהה החיבור הוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור – לדוגמה,
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.iam.gserviceaccount.com"}
מידע על ניהול חיבורים זמין במאמר ניהול חיבורים.
הענקת גישה לחשבון השירות
כדי לאפשר לפרוצדורה מאוחסנת של Apache Spark לגשת למשאבים שלכם ב- Google Cloud, צריך לתת לחשבון השירות שמשויך לחיבור של הפרוצדורה המאוחסנת את הרשאות ה-IAM הנדרשות. לחלופין, אפשר להשתמש בחשבון שירות בהתאמה אישית כדי לגשת לנתונים.
כדי לקרוא ולכתוב נתונים מ-BigQuery ואליו, צריך לתת לחשבון השירות את הרשאות ה-IAM הבאות:
-
bigquery.tables.*בטבלאות BigQuery -
bigquery.readsessions.*בפרויקט
תפקיד ה-IAM
roles/bigquery.adminכולל את ההרשאות שחשבון השירות צריך כדי לקרוא ולכתוב נתונים מ-BigQuery ואליו.-
כדי לקרוא ולכתוב נתונים מ-Cloud Storage ואליו, צריך לתת לחשבון השירות את ההרשאה
storage.objects.*לאובייקטים של Cloud Storage.תפקיד ה-IAM
roles/storage.objectAdminכולל את ההרשאות שחשבון השירות צריך כדי לקרוא ולכתוב נתונים מ-Cloud Storage ואליו.אם מציינים Dataproc Metastore כשיוצרים חיבור, כדי ש-BigQuery יוכל לאחזר פרטים על ההגדרה של Metastore, צריך להעניק לחשבון השירות את ההרשאה
metastore.services.getב-Dataproc Metastore.התפקיד המוגדר מראש
roles/metastore.metadataViewerכולל את ההרשאה שחשבון השירות צריך כדי לאחזר פרטים על הגדרת ה-metastore.צריך גם לתת לחשבון השירות את
roles/storage.objectAdminהתפקיד בקטגוריה של Cloud Storage כדי שהפרוצדורה המאוחסנת תוכל לגשת לספריית מחסן הנתונים של Hive ב-Dataproc Metastore (hive.metastore.warehouse.dir). אם הפרוצדורה המאוחסנת מבצעת פעולות במאגר המידע של המטא-נתונים, יכול להיות שתצטרכו לתת הרשאות נוספות. במאמר תפקידים והרשאות מוגדרים מראש ב-Dataproc Metastore תוכלו לקרוא מידע נוסף על תפקידים והרשאות ב-IAM ב-Dataproc Metastore.אם מציינים שרת היסטוריה מתמשך של Dataproc כשיוצרים חיבור, צריך להקצות לחשבון השירות את התפקידים הבאים:
- התפקיד
roles/dataproc.viewerבשרת ההיסטוריה המתמשך של Dataproc שכולל את ההרשאהdataproc.clusters.get. - תפקיד
roles/storage.objectAdminבדלי Cloud Storage שאתם מציינים עבור הנכסspark:spark.history.fs.logDirectoryכשאתם יוצרים את שרת ההיסטוריה המתמשך של Dataproc.
מידע נוסף זמין במאמרים Dataproc Persistent History Server ותפקידים והרשאות ב-Dataproc.
- התפקיד
שיתוף חיבורים עם משתמשים
אתם יכולים להקצות את התפקידים הבאים כדי לאפשר למשתמשים לשלוח שאילתות לנתונים ולנהל חיבורים:
roles/bigquery.connectionUser: מאפשר למשתמשים להשתמש בחיבורים כדי להתחבר למקורות נתונים חיצוניים ולהריץ עליהם שאילתות.
roles/bigquery.connectionAdmin: מאפשר למשתמשים לנהל את החיבורים.
במאמר תפקידים והרשאות מוגדרים מראש יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף BigQuery.
החיבורים מופיעים בפרויקט בקבוצה שנקראת Connections (חיבורים).
בחלונית הימנית, לוחצים על כלי הניתוחים:

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