קריאת טבלאות מנוהלות של Apache Iceberg באמצעות Apache Spark
בקטעים הבאים מוסבר איך לקרוא טבלאות מנוהלות באמצעות טבלאות מנוהלות של Apache Iceberg (להלן טבלאות מנוהלות של Iceberg) עם Apache Spark.
לפני שמתחילים
במאמר סקירה כללית על טבלאות BigLake מוסבר על הסוגים השונים של טבלאות BigLake ועל ההשלכות של השימוש בהן.
לפני שקוראים טבלאות מנוהלות של Iceberg באמצעות Apache Spark, צריך לוודא שהגדרתם חיבור למשאב בענן לדלי אחסון. לחיבור שלכם צריכות להיות הרשאות כתיבה בקטגוריית האחסון, כפי שמפורט בקטע תפקידים נדרשים שבהמשך. מידע נוסף על התפקידים וההרשאות הנדרשים לחיבורים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול טבלאות בפרויקט באמצעות BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
כדי לשלוח שאילתות לנתונים:
- BigQuery Data Viewer (
roles/bigquery.dataViewer) בפרויקט - BigQuery User (
roles/bigquery.user) בפרויקט
- BigQuery Data Viewer (
-
מקצים לחשבון השירות של החיבור את התפקידים הבאים כדי שהוא יוכל לקרוא ולכתוב נתונים ב-Cloud Storage:
- משתמש באובייקטים באחסון (
roles/storage.objectUser) בקטגוריה - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) on the bucket
- משתמש באובייקטים באחסון (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לאפשר ל-BigQuery לנהל טבלאות בפרויקט. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לאפשר ל-BigQuery לנהל טבלאות בפרויקט שלכם, נדרשות ההרשאות הבאות:
-
bigquery.connections.delegateבפרויקט -
bigquery.jobs.createבפרויקט -
bigquery.readsessions.createבפרויקט -
bigquery.tables.getבפרויקט -
bigquery.tables.getDataבפרויקט -
storage.buckets.getבקטגוריה שלכם -
storage.objects.createבקטגוריה שלכם -
storage.objects.deleteבקטגוריה שלכם -
storage.objects.getבקטגוריה שלכם -
storage.objects.listבקטגוריה שלכם
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
קריאת טבלאות מנוהלות של Iceberg באמצעות Apache Spark
בדוגמה הבאה מוגדרת סביבה לשימוש ב-Spark SQL עם Apache Iceberg, ואז מבוצעת שאילתה כדי לאחזר נתונים מטבלה מנוהלת של Iceberg.
spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \ --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \ # Query the table SELECT * FROM CATALOG_NAME.FOLDER_NAME;
מחליפים את מה שכתוב בשדות הבאים:
- ICEBERG_VERSION_NUMBER: הגרסה הנוכחית של זמן הריצה של Apache Spark Iceberg. מורידים את הגרסה העדכנית ביותר מSpark Releases.
- CATALOG_NAME: הקטלוג שאליו מתייחסים בטבלה המנוהלת של Iceberg.
- BUCKET_PATH: הנתיב לדלי שמכיל את קובצי הטבלה. לדוגמה,
gs://mybucket/. - FOLDER_NAME: התיקייה שמכילה את קובצי הטבלה.
לדוגמה,
myfolder.