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

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

‫Google משלמת על האחסון של מערכי הנתונים האלה ומספקת גישה ציבורית לנתונים דרך Lakehouse. אתם משלמים רק על השאילתות שאתם מריצים על הנתונים.

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

  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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

לפני שמתחברים ל-Apache Spark, צריך:

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

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

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

מכיוון שמערכי הנתונים הציבוריים של Lakehouse מוצגים דרך Iceberg REST Catalog, אתם יכולים לגשת אליהם מ-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://CATALOG_NAME \
  --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

מחליפים את מה שכתוב בשדות הבאים:

חיבור באמצעות PySpark ו-Managed Service for Apache Spark

אתם יכולים גם להשתמש ב-notebook מנוהל של Spark בלי שרת (serverless) ב-Managed Service for Apache Spark כדי לשלוח שאילתות לטבלאות בלי ליצור או לנהל אשכול:

from google.cloud.dataproc_v1 import Session
from google.cloud.dataproc_spark_connect import DataprocSparkSession

PROJECT_ID = "PROJECT_ID"
spark_catalog = "CATALOG_NAME"

session = Session()
session.runtime_config.properties = {
  "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
  f"spark.sql.catalog.{spark_catalog}": "org.apache.iceberg.spark.SparkCatalog",
  f"spark.sql.catalog.{spark_catalog}.type": "rest",
  f"spark.sql.catalog.{spark_catalog}.uri": "https://biglake.googleapis.com/iceberg/v1/restcatalog",
  f"spark.sql.catalog.{spark_catalog}.rest.auth.type": "org.apache.iceberg.gcp.auth.GoogleAuthManager",
  f"spark.sql.catalog.{spark_catalog}.io-impl": "org.apache.iceberg.gcp.gcs.GCSFileIO",
  f"spark.sql.catalog.{spark_catalog}.header.X-Iceberg-Access-Delegation": "vended-credentials",
  f"spark.sql.catalog.{spark_catalog}.warehouse": f"gs://{spark_catalog}",
  f"spark.sql.catalog.{spark_catalog}.header.x-goog-user-project": PROJECT_ID,
}

spark = (
   DataprocSparkSession.builder
     .appName("Lakehouse Public Data Demo")
     .dataprocSessionConfig(session)
     .getOrCreate()
)
spark.conf.set("spark.sql.defaultCatalog", spark_catalog)

מחליפים את מה שכתוב בשדות הבאים:

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

אחרי החיבור, תהיה לכם גישת SQL מלאה למערכי הנתונים.

שאילתות על צפיות בדפים בוויקיפדיה ועל פקודות commit ב-GitHub

אחרי שמתחברים לקטלוג lakehouse-public-data בסשן של PySpark, אפשר להריץ שאילתות על מספר הצפיות החודשיות בוויקיפדיה במאמרים שקשורים ל-BigQuery:

df1 = spark.sql("""
SELECT
  title,
  wiki,
  SUM(views) AS total_views
FROM wikipedia.pageviews_2026
WHERE datehour >= TIMESTAMP '2026-01-01 00:00:00'
  AND datehour <  TIMESTAMP '2026-02-01 00:00:00'
  AND LOWER(title) LIKE '%bigquery%'
GROUP BY title, wiki
ORDER BY total_views DESC
LIMIT 20
""")
df1.show(10)

אפשר גם לאחזר את ה-commits האחרונים ב-GitHub שמפנים ל-Iceberg:

df2 = spark.sql("""
SELECT
  commits.commit,
  commits.subject,
  commits.message,
  commits.author.name AS author_name,
  timestamp_seconds(commits.committer.date.seconds) AS commit_time,
  repo_name
FROM github_repos.commits AS commits
WHERE LOWER(commits.subject) LIKE '%iceberg%'
   OR LOWER(commits.message) LIKE '%iceberg%'
ORDER BY commit_time DESC
LIMIT 50
""")
df2.show(10)

הרצת שאילתות במערך הנתונים של מוניות בניו יורק

מערך הנתונים NYC Taxi זמין בקטלוג biglake-public-nyc-taxi-iceberg, והוא מוגדר כטבלת 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), אפשר למצוא את המזהים של תמונות המצב ולחזור אחורה בזמן כדי לראות איך מערך הנתונים גדל עם הזמן.

מידע נוסף זמין במאמר שליחת שאילתות לטבלאות Apache Iceberg באמצעות Lakehouse.

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

ב-Lakehouse יש מערכי נתונים ציבוריים וטבלאות לדוגמה שאפשר לשלוח אליהם שאילתות כטבלאות Apache Iceberg בשני קטלוגים ציבוריים: lakehouse-public-data ו-biglake-public-nyc-taxi-iceberg.

קטלוג lakehouse-public-data

הקטלוג lakehouse-public-data (gs://lakehouse-public-data) כולל את מרחבי השמות והטבלאות הבאים בפורמט Apache Iceberg.

austin_bikeshare

מרחב השמות austin_bikeshare כולל את הטבלאות הבאות:

שם תיאור
bikeshare_trips רשומות של נסיעות באופניים שיתופיים באוסטין, כולל משך הנסיעה, חותמות זמן של ההתחלה והסיום ופרטים על התחנה.

bls

מרחב השמות bls כולל נתונים סטטיסטיים כלכליים שסופקו על ידי הלשכה לסטטיסטיקה של עבודה בארה"ב:

שם תיאור
cpi_u נתונים מסדרת מדד המחירים לצרכן לכל הצרכנים העירוניים (CPI-U).
unemployment_cps נתונים סטטיסטיים על אבטלה מתוך סקר האוכלוסייה הנוכחי (CPS).

census_bureau_acs

מרחב השמות census_bureau_acs כולל את הטבלאות הבאות:

שם תיאור
state_2020_5yr הערכות ל-5 שנים ברמת המדינה לשנת 2020, מתוך סקר הקהילה האמריקאית (ACS) של לשכת מפקד האוכלוסין של ארה"ב.

chicago_taxi_trips

מרחב השמות chicago_taxi_trips כולל את הטבלאות הבאות:

שם תיאור
taxi_trips רשומות של נסיעות במוניות בשיקגו, כולל חותמות זמן של נסיעות, מרחק, תעריפים ומיקומים של איסוף והורדה.

crypto_ethereum

מרחב השמות crypto_ethereum כולל את הטבלאות הבאות:

שם תיאור
transactions רשומות של עסקאות בבלוקצ'יין של Ethereum, כולל כתובות של שולחים ומקבלים, ערך ומדדי גז.

ga4_obfuscated_sample_ecommerce

מרחב השמות ga4_obfuscated_sample_ecommerce כולל את הטבלאות הבאות:

שם תיאור
events_20210131 נתוני אירועים מוסתרים של Google Analytics 4 שמדמים הטמעה של מסחר אלקטרוני באינטרנט ב-31 בינואר 2021.

geo_openstreetmap

מרחב השמות geo_openstreetmap כולל את הטבלאות הבאות:

שם תיאור
planet_features תכונות גיאוגרפיות גלובליות של OpenStreetMap, כולל סוגי תכונות, תגים וצורות גיאומטריות.

geo_us_boundaries

מרחב השמות geo_us_boundaries כולל את הטבלאות הבאות:

שם תיאור
zip_codes גבולות של מיקודים בארה"ב, כולל קודי FIPS של עיר, מחוז ומדינה, וצורות גיאומטריות גיאוגרפיות.

github_repos

מרחב השמות github_repos כולל נתונים ממאגרים ציבוריים ברישיון קוד פתוח ב-GitHub:

שם תיאור
commits פעולות commit ייחודיות של Git ממאגרים של קוד פתוח ב-GitHub, מקובצות לפי מאגר.
contents תוכן ייחודי של קובצי טקסט בגודל של פחות מ-1MiB בענף HEAD.
languages שפות תכנות לפי מאגר, כפי שדווחו על ידי GitHub API.
licenses קוד SPDX של רישיון קוד פתוח לכל מאגר.
sample_commits דוגמה של פקודות commit מהטבלה commits.
sample_contents דגימה אקראית של 10% מתוכן קובץ הטקסט מהטבלה contents.
sample_files מטא-נתונים של קבצים שנדגמו ב-HEAD מתוך 400,000 המאגרים המובילים שרשומים ב-sample_repos.
sample_repos ‫400,000 המאגרים המובילים ב-GitHub לפי מספר הכוכבים.

מרחב השמות google_trends כולל את הטבלאות הבאות:

שם תיאור
top_terms ‫25 מונחי החיפוש המובילים בכל יום בארצות הברית, כולל ציון, דירוג, זמן ואזור שוק ייעודי (DMA).

imdb

מרחב השמות imdb כולל את הטבלאות הבאות:

שם תיאור
title_basics מטא-נתונים של כותרים ב-IMDb, כולל סוג הכותר, כותרים ראשיים ומקוריים, שנת הפצה, משך זמן וז'אנרים.
title_ratings ממוצעי דירוג של משתמשי IMDb ומספרי הצבעות לכותרים.

iowa_liquor_sales

מרחב השמות iowa_liquor_sales כולל את הטבלאות הבאות:

שם תיאור
sales רשומות של רכישות סיטונאיות של משקאות חריפים במדינת איווה על ידי קמעונאים למכירה לאנשים פרטיים מאז 2012.

ml_datasets

מרחב השמות ml_datasets כולל טבלאות של נקודות השוואה ללמידת מכונה:

שם תיאור
census_adult_income מערך נתונים של הכנסות מבוגרים ממפקד אוכלוסין, שמשמש למשימות סיווג לחיזוי אם ההכנסה עולה על 50,000 $בשנה.
penguins מידות של פינגווינים בארכיפלג פאלמר, כולל מין, אי, מידות המקור, אורך הסנפיר ומסת הגוף.
ulb_fraud_detection עסקאות אנונימיות בכרטיסי אשראי של בעלי כרטיסים אירופאים מספטמבר 2013, לצורך השוואה של זיהוי הונאות.

new_york_citibike

מרחב השמות new_york_citibike כולל את הטבלאות הבאות:

שם תיאור
citibike_trips רשומות של נסיעות ב-Citi Bike בניו יורק, כולל משך הנסיעה, חותמות זמן, מיקומי תחנות ודמוגרפיה של הרוכבים.

new_york_taxi_trips

מרחב השמות new_york_taxi_trips כולל את הטבלאות הבאות:

שם תיאור
taxi_zone_geom מזהים, שמות, רבעים וגבולות גיאומטריים של אזורי מוניות של NYC Taxi and Limousine Commission‏ (TLC).
tlc_green_trips_2022 רשומות של נסיעות במוניות ירוקות של NYC TLC לשנת 2022.
tlc_yellow_trips_2022 רשומות של נסיעות במוניות צהובות של NYC TLC לשנת 2022.

noaa_gsod

מרחב השמות noaa_gsod כולל נתוני מזג אוויר של Global Surface Summary of the Day (GSOD) מ-National Oceanic and Atmospheric Administration (מנהל האוקיינוסים והאטמוספירה הלאומי של ארה"ב, NOAA):

שם תיאור
gsod2023 תצפיות יומיות גלובליות של סיכום מזג האוויר על פני השטח לשנת 2023.
stations מטא-נתונים של תחנות מזג אוויר של NOAA, כולל מזהי תחנות, שמות, מדינות, אזורים וקואורדינטות.

sec_quarterly_financials

מרחב השמות sec_quarterly_financials כולל את הטבלאות הבאות:

שם תיאור
numbers נתונים מספריים של דוחות כספיים שנלקחו מהדוחות הרבעוניים של הרשות לניירות ערך בארה"ב (SEC).

stackoverflow

מרחב השמות stackoverflow כולל את הטבלאות הבאות:

שם תיאור
posts_answers פוסטים של תשובות ב-Stack Overflow, כולל גוף הטקסט, הניקוד, תאריך היצירה ופרטי המחבר.
posts_questions פוסטים של שאלות ב-Stack Overflow, כולל כותרת, גוף הטקסט, תגים, מספר צפיות ומזהה התשובה שהתקבלה.
users פרופילי משתמשים ב-Stack Overflow, כולל שם לתצוגה, מוניטין, תאריך יצירה ומספר תגים.

tpc_ds_1g

מרחב השמות tpc_ds_1g כולל טבלאות של מבחני ביצועים של TPC-DS בנפח 1GB:

שם תיאור
date_dim טבלת מאפייני תאריכים של TPC-DS שממפה תאריכים קלנדריים לתקופות פיסקליות, לרבעונים ולחגים.
store_sales טבלת עובדות של מכירות בחנות הפיזית TPC-DS שמתעדת עסקאות בחנות הפיזית.

wikipedia

מרחב השמות wikipedia כולל נתונים סטטיסטיים של צפיות בדפים ב-Wikimedia וישויות של Wikidata:

שם תיאור
pageviews_2015 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2015, מחולק לפי תאריך.
pageviews_2016 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2016, מחולק לפי תאריך.
pageviews_2017 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2017, מחולק לפי תאריך.
pageviews_2018 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2018, מחולק לפי תאריך.
pageviews_2019 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2019, מחולק לפי תאריך.
pageviews_2020 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2020, מחולק לפי תאריך.
pageviews_2021 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2021, מחולק לפי תאריך.
pageviews_2022 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2022, מחולק לפי תאריך.
pageviews_2023 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2023, מחולק לפי תאריך.
pageviews_2024 מספר הצפיות בדפי ויקיפדיה לפי שעה לשנת 2024, מחולק לפי תאריך.
pageviews_2025 מספר הצפיות בדפי ויקיפדיה לפי שעה בשנת 2025, מחולק לפי תאריך.
pageviews_2026 מספר הצפיות בדפי ויקיפדיה לפי שעה לשנת 2026, מחולק לפי תאריך.
table_activists מספר הצפיות בדפים בוויקיפדיה של מאמרים על פעילים.
table_actors מספר הצפיות בדפים בוויקיפדיה של מאמרים על שחקנים.
table_alumni מספר הצפיות בדפים בוויקיפדיה של מאמרים על בוגרים.
table_artists מספר הצפיות בדפים בוויקיפדיה של מאמרים על אומנים.
table_athlete מספר הצפיות בדפים בוויקיפדיה של מאמרים על ספורטאים.
table_bands מספר הצפיות בדפים בוויקיפדיה של ערכים על להקות מוזיקליות.
table_born מספר הצפיות בדפים בוויקיפדיה של מאמרים שמסווגים לפי שנת לידה.
table_businesspeople מספר הצפיות בדפים בוויקיפדיה של מאמרים על אנשי עסקים.
table_comedians מספר הצפיות בדפים בוויקיפדיה של מאמרים על קומיקאים.
table_composers מספר הצפיות בדפים בוויקיפדיה של מאמרים על מלחינים.
table_inventors מספר הצפיות בדפים בוויקיפדיה של מאמרים על ממציאים.
table_politicians מספר הצפיות בדפים בוויקיפדיה של מאמרים על פוליטיקאים.
table_scientists מספר הצפיות בדפים בוויקיפדיה של מאמרים על מדענים.
table_singers מספר הצפיות בדפים בוויקיפדיה של מאמרים על זמרים.
table_writers מספר הצפיות בדפים בוויקיפדיה של מאמרים על סופרים.
wikidata ישויות מובנות של מאגר הידע של Wikidata, כולל תוויות, תיאורים, קישורי Sitelink וטענות בכמה שפות.

world_bank_health_population

מרחב השמות world_bank_health_population כולל נתונים סטטיסטיים של הבנק העולמי בנושאי בריאות, תזונה ואוכלוסייה:

שם תיאור
country_series_definitions הגדרות ומטא-נתונים שמקשרים בין קודי מדינות לקודי סדרות של אינדיקטורים.
country_summary מטא-נתונים של מדינות, כולל שמות קצרים וארוכים, קודי ISO, יחידות מטבע ואזורים.
health_nutrition_population ערכי אינדיקטורים שנתיים של בריאות, תזונה ואוכלוסייה לפי מדינה.
series_summary מטא-נתונים של מדדי בריאות ואוכלוסייה, כולל הגדרות, יחידות מידה ומחזוריות.
series_times מטא-נתונים ותיאורים של סדרות זמנים לפי קוד סדרת האינדיקטורים והשנה.

world_bank_wdi

מרחב השמות world_bank_wdi כולל נתונים של מדדי פיתוח עולמיים (WDI) של הבנק העולמי:

שם תיאור
country_summary מטא-נתונים של מדינות, כולל שמות קצרים וארוכים, קודי ISO, יחידות מטבע וקבוצות הכנסה.
indicators_data ערכים שנתיים של מדדי פיתוח עולמיים לפי מדינה וקוד מדד.
series_summary הגדרות, נושאים ויחידות מידה לסדרות של מדדי פיתוח עולמיים.

קטלוג biglake-public-nyc-taxi-iceberg

הקטלוג biglake-public-nyc-taxi-iceberg (gs://biglake-public-nyc-taxi-iceberg) כולל את הטבלאות הבאות במרחב השמות public_data בפורמט Apache Iceberg:

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

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