מערכי נתונים ציבוריים של Lakehouse

Lakehouse for Apache Iceberg מארח קבוצות נתונים ציבוריות באיכות גבוהה שמוגשות דרך Apache Iceberg REST Catalog, וכך הופכות לזמינות לציבור הרחב כחלק מGoogle Cloudתוכנית קבוצות הנתונים הציבוריות.

קבוצות הנתונים האלה זמינות לגישה לקריאה בלבד, ואפשר לגשת אליהן ולשלב אותן באפליקציות באמצעות Apache Spark,‏ Trino,‏ Flink או BigQuery. ‫Google משלמת על האחסון של מערכי הנתונים האלה ומספקת גישה ציבורית לנתונים דרך Lakehouse. התשלום הוא רק על השאילתות שמריצים על הנתונים.

המטרה של מערכי הנתונים הציבוריים האלה היא להקל על השימוש ב-Iceberg. לא צריך לנהל תשתית כדי ללמוד על Iceberg, צריך להתחבר. אתם יכולים להשתמש במערכי הנתונים האלה כדי:

  • להשתמש ב-BigQuery (דרך Lakehouse) כדי להריץ שאילתות ישירות בטבלאות האלה באמצעות SQL, ולשלב אותן עם הנתונים הפרטיים שלכם.
  • בודקים את ההגדרות של מנוע ה-OSS (לדוגמה, Spark,‏ Trino או Flink) מול קטלוג REST פעיל.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Lakehouse API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

לפני שמתחברים אל Apache Spark, צריך לוודא שיש לכם את הדברים הבאים:

מיקומים של מערכי נתונים ציבוריים

כל מערך נתונים ציבורי מאוחסן במיקום ספציפי, כמו US או EU. מערכי הנתונים הציבוריים של Lakehouse מאוחסנים בUS מיקום במספר אזורים. כששולחים שאילתה למערך נתונים ציבורי, צריך לוודא שהמיקום של העיבוד תואם למיקום של מערך הנתונים.

גישה למערכי נתונים ציבוריים באמצעות Apache Spark

מערכי הנתונים הציבוריים של Lakehouse מוגשים דרך קטלוג Iceberg REST, ולכן אפשר לגשת אליהם מ-Apache Spark וממנועים תואמים אחרים. אפשר להתחבר למערך הנתונים הציבורי באמצעות כל סביבת Spark רגילה, כמו סביבה מקומית, Managed Service for Apache Spark או ספקים אחרים של שירותי ענן.

חיבור ל-Apache Spark

משתמשים בדגלי ההגדרה הבאים כשמתחילים את סשן Spark SQL. הדגלים האלה מגדירים קטלוג בשם lakehouse-sample שמפנה לנקודת הקצה הציבורית של REST.

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0,org.apache.iceberg:iceberg-gcp-bundle:1.10.0 \
  --conf spark.hadoop.hive.cli.print.header=true \
  --conf spark.sql.catalog.bqms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.bqms.type=rest \
  --conf spark.sql.catalog.bqms.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog \
  --conf spark.sql.catalog.bqms.warehouse=gs://biglake-public-nyc-taxi-iceberg \
  --conf spark.sql.catalog.bqms.header.x-goog-user-project=PROJECT_ID \
  --conf spark.sql.catalog.bqms.rest.auth.type=google \
  --conf spark.sql.catalog.bqms.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO \
  --conf spark.sql.catalog.bqms.header.X-Iceberg-Access-Delegation=vended-credentials \
  --conf spark.sql.defaultCatalog=lakehouse-sample

מחליפים את PROJECT_ID במזהה הפרויקט ב- Google Cloud .

שאילתות לדוגמה

אחרי שמתחברים, יש לכם גישת SQL מלאה למערכי הנתונים. ערכת הנתונים NYC Taxi זמינה ומעוצבת כטבלת Iceberg כדי להדגים את יכולות החלוקה למחיצות והמטא-נתונים.

השאילתה הבאה צוברת מיליוני רשומות כדי למצוא את מחיר הכרטיס הממוצע ואת מרחק הנסיעה לפי מספר הנוסעים. הוא מדגים איך Iceberg סורק ביעילות קבצי נתונים בלי צורך לפרט ספריות, באמצעות קיצוץ מחיצות:

SELECT
    passenger_count,
    COUNT(1) AS num_trips,
    ROUND(AVG(total_amount), 2) AS avg_fare,
    ROUND(AVG(trip_distance), 2) AS avg_distance
FROM
    lakehouse-sample.public_data.nyc_taxicab
WHERE
    data_file_year = 2021
    AND passenger_count > 0
GROUP BY
    passenger_count
ORDER BY
    num_trips DESC;

אחת התכונות הכי שימושיות של Iceberg היא Time Travel (מסע בזמן). אפשר לשלוח שאילתה לטבלה כפי שהיא הייתה בנקודה ספציפית בעבר. השאילתה הבאה מאפשרת לבדוק שינויים על ידי השוואה בין מספר השורות בגרסה הנוכחית לבין מספר השורות בתמונת מצב ספציפית:

-- Compare the row count of the current version vs. a specific snapshot
SELECT
    'Current State' AS version,
    COUNT(*) AS count
FROM lakehouse-sample.public_data.nyc_taxicab
UNION ALL
SELECT
    'Past State' AS version,
    COUNT(*) AS count
FROM lakehouse-sample.public_data.nyc_taxicab VERSION AS OF 2943559336503196801Q;

אפשר להריץ שאילתות בטבלת המטא-נתונים של ההיסטוריה (לדוגמה, SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history) כדי למצוא מזהי Snapshot ולחזור אחורה בזמן כדי לראות איך מערך הנתונים גדל עם הזמן.

מידע נוסף זמין במאמר בנושא שימוש בקטלוג של Lakehouse runtime עם Spark,‏ Iceberg REST Catalog ו-Cloud Storage.

קבוצות נתונים זמינות

‫Lakehouse מספק טבלאות לדוגמה שאפשר להריץ עליהן שאילתות כטבלאות Lakehouse.

מערך הנתונים biglake-public-nyc-taxi-iceberg כולל את הטבלאות הבאות בפורמט Apache Iceberg:

שם תיאור
nyc_taxicab נתוני רשומות נסיעה של NYC Taxi and Limousine Commission (TLC).

המאמרים הבאים