Set di dati pubblici Borderless Lakehouse

Borderless Lakehouse ti consente di eseguire query su set di dati pubblici di sola lettura forniti tramite l'endpoint del catalogo REST Apache Iceberg nell'ambito del programma di set di dati pubbliciGoogle Cloud . Puoi connettere BigQuery, Managed Service for Apache Spark, Trino o Apache Flink per combinare queste tabelle con i tuoi dati privati o testare le configurazioni del motore open source con un endpoint del catalogo REST Apache Iceberg attivo senza gestire l'infrastruttura di archiviazione.

Google paga per l'archiviazione di questi set di dati e fornisce l'accesso pubblico ai dati tramite Lakehouse. Paghi solo per le query che esegui sui dati.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  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

Prima di connetterti ad Apache Spark, devi disporre di quanto segue:

Località dei set di dati pubblici

Ogni set di dati pubblico è archiviato in una località specifica, ad esempio US o EU. I set di dati pubblici di Lakehouse sono archiviati nella località multiregionale US. Quando esegui una query su un set di dati pubblico, assicurati che la località di elaborazione sia compatibile con quella del set di dati.

Accedi ai set di dati pubblici utilizzando Apache Spark

Poiché i set di dati pubblici di Lakehouse vengono forniti tramite il catalogo REST Iceberg, puoi accedervi da Apache Spark e da altri motori compatibili. Puoi connetterti al set di dati pubblico utilizzando qualsiasi ambiente Spark standard, ad esempio on-premise, Managed Service for Apache Spark o altri fornitori cloud.

Connettiti con Apache Spark

Utilizza i seguenti flag di configurazione quando avvii la sessione Spark SQL. Questi flag configurano un catalogo denominato lakehouse-sample che punta all'endpoint REST pubblico:

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

Sostituisci quanto segue:

  • CATALOG_NAME: il nome del catalogo di set di dati pubblici, ad esempio lakehouse-public-data o biglake-public-nyc-taxi-iceberg.
  • PROJECT_ID: il tuo ID progetto Google Cloud .

Connettiti con PySpark e Managed Service for Apache Spark

Puoi anche utilizzare un notebook Spark serverless gestito in Managed Service for Apache Spark per eseguire query sulle tabelle senza creare o gestire un cluster:

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)

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • CATALOG_NAME: il nome del catalogo di set di dati pubblici, ad esempio lakehouse-public-data o biglake-public-nyc-taxi-iceberg.

Esempi di query

Una volta stabilita la connessione, avrai accesso SQL completo ai set di dati.

Esegui query sulle visualizzazioni di pagina di Wikipedia e sui commit di GitHub

Quando ti connetti al catalogo lakehouse-public-data in una sessione PySpark, puoi eseguire query sui numeri di visualizzazioni mensili di Wikipedia per gli articoli correlati a 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)

Puoi anche recuperare i commit GitHub recenti che fanno riferimento a 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)

Esegui una query sul set di dati NYC Taxi

Il set di dati NYC Taxi è disponibile nel catalogo biglake-public-nyc-taxi-iceberg, modellato come tabella Iceberg per dimostrare le funzionalità di partizionamento e metadati.

La seguente query aggrega milioni di record per trovare la tariffa media e la distanza del percorso in base al numero di passeggeri. Mostra come Iceberg esegue in modo efficiente la scansione dei file di dati senza dover elencare le directory utilizzando la potatura delle partizioni:

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;

Una delle funzionalità più potenti di Iceberg è il viaggio nel tempo. Puoi eseguire query sulla tabella così come esisteva in un momento specifico del passato. La seguente query ti consente di controllare le modifiche confrontando il numero di righe della versione corrente con uno snapshot specifico:

-- 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;

Eseguendo una query sulla tabella dei metadati della cronologia (ad esempio SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history), puoi trovare gli ID degli snapshot e tornare indietro nel tempo per vedere come è cresciuto il set di dati nel tempo.

Per saperne di più, consulta Esegui query sulle tabelle Apache Iceberg con Lakehouse.

Set di dati disponibili

Lakehouse fornisce set di dati pubblici e tabelle di esempio che puoi eseguire query come tabelle Apache Iceberg in due cataloghi pubblici: lakehouse-public-data e biglake-public-nyc-taxi-iceberg.

Catalogo lakehouse-public-data

Il catalogo lakehouse-public-data (gs://lakehouse-public-data) include i seguenti spazi dei nomi e le seguenti tabelle nel formato Apache Iceberg.

austin_bikeshare

Lo spazio dei nomi austin_bikeshare include le seguenti tabelle:

Nome Descrizione
bikeshare_trips Record dei percorsi di Austin Bikeshare, tra cui durata del percorso, timestamp di inizio e fine e dettagli della stazione.

bls

Lo spazio dei nomi bls include statistiche economiche fornite dallo US Bureau of Labor Statistics:

Nome Descrizione
cpi_u Dati della serie dell'Indice dei prezzi al consumo per tutti i consumatori urbani (CPI-U).
unemployment_cps Statistiche sulla disoccupazione del Current Population Survey (CPS).

census_bureau_acs

Lo spazio dei nomi census_bureau_acs include le seguenti tabelle:

Nome Descrizione
state_2020_5yr Stime a livello statale per 5 anni dell'American Community Survey (ACS) dello US Census Bureau per il 2020.

chicago_taxi_trips

Lo spazio dei nomi chicago_taxi_trips include le seguenti tabelle:

Nome Descrizione
taxi_trips Record delle corse in taxi a Chicago, inclusi timestamp, distanza, tariffe e luoghi di partenza e arrivo delle corse.

crypto_ethereum

Lo spazio dei nomi crypto_ethereum include le seguenti tabelle:

Nome Descrizione
transactions Record delle transazioni della blockchain di Ethereum, inclusi indirizzi di mittente e destinatario, valore e metriche del gas.

ga4_obfuscated_sample_ecommerce

Lo spazio dei nomi ga4_obfuscated_sample_ecommerce include le seguenti tabelle:

Nome Descrizione
events_20210131 Dati sugli eventi di Google Analytics 4 offuscati che emulano un'implementazione di e-commerce web per il 31 gennaio 2021.

geo_openstreetmap

Lo spazio dei nomi geo_openstreetmap include le seguenti tabelle:

Nome Descrizione
planet_features Elementi geografici globali di OpenStreetMap, inclusi tipi di elementi, tag e geometrie.

geo_us_boundaries

Lo spazio dei nomi geo_us_boundaries include le seguenti tabelle:

Nome Descrizione
zip_codes Confini dei codici postali degli Stati Uniti, inclusi città, contea, codici FIPS statali e geometrie geografiche.

github_repos

Lo spazio dei nomi github_repos include i dati dei repository pubblici con licenza open source su GitHub:

Nome Descrizione
commits Commit Git univoci da repository open source su GitHub, raggruppati per repository.
contents Contenuti univoci dei file di testo di dimensioni inferiori a 1 MiB nel branch HEAD.
languages Linguaggi di programmazione per repository, come riportato dall'API GitHub.
licenses Codice SPDX della licenza open source per ogni repository.
sample_commits Esempio di commit dalla tabella commits.
sample_contents Sottoinsieme campionato in modo casuale del 10% dei contenuti dei file di testo della tabella contents.
sample_files Metadati dei file campionati per i file in HEAD dai primi 400.000 repository elencati in sample_repos.
sample_repos I 400.000 repository GitHub principali per numero di stelle.

Lo spazio dei nomi google_trends include le seguenti tabelle:

Nome Descrizione
top_terms I 25 termini di ricerca più utilizzati ogni giorno negli Stati Uniti con punteggio, ranking, ora e Designated Market Area (DMA).

imdb

Lo spazio dei nomi imdb include le seguenti tabelle:

Nome Descrizione
title_basics Metadati dei titoli IMDb, inclusi tipo di titolo, titoli principali e originali, anno di uscita, durata e generi.
title_ratings Medie delle valutazioni degli utenti di IMDb e numero di voti per i titoli.

iowa_liquor_sales

Lo spazio dei nomi iowa_liquor_sales include le seguenti tabelle:

Nome Descrizione
sales Registri degli acquisti di liquori all'ingrosso nello stato dell'Iowa da parte dei rivenditori per la vendita a privati dal 2012.

ml_datasets

Lo spazio dei nomi ml_datasets include tabelle di benchmark di machine learning:

Nome Descrizione
census_adult_income Set di dati sul reddito degli adulti del censimento utilizzato per le attività di classificazione che prevedono se il reddito supera i 50.000 $all'anno.
penguins Misurazioni dei pinguini dell'arcipelago di Palmer, tra cui specie, isola, dimensioni del culmen, lunghezza delle pinne e massa corporea.
ulb_fraud_detection Transazioni con carta di credito anonimizzate da titolari di carte europei da settembre 2013 per il benchmarking del rilevamento delle frodi.

new_york_citibike

Lo spazio dei nomi new_york_citibike include le seguenti tabelle:

Nome Descrizione
citibike_trips Record delle corse di Citi Bike di New York City, tra cui durata della corsa, timestamp, posizioni delle stazioni e dati demografici dei ciclisti.

new_york_taxi_trips

Lo spazio dei nomi new_york_taxi_trips include le seguenti tabelle:

Nome Descrizione
taxi_zone_geom ID, nomi, quartieri e geometrie dei confini delle zone dei taxi della NYC Taxi and Limousine Commission (TLC).
tlc_green_trips_2022 Record delle corse dei taxi verdi della NYC TLC per il 2022.
tlc_yellow_trips_2022 Record delle corse dei taxi gialli della NYC TLC per il 2022.

noaa_gsod

Lo spazio dei nomi noaa_gsod include i dati meteo del Global Surface Summary of the Day (GSOD) della National Oceanic and Atmospheric Administration (NOAA):

Nome Descrizione
gsod2023 Osservazioni di riepilogo giornaliere del meteo di superficie globale per il 2023.
stations Metadati delle stazioni meteo NOAA, inclusi identificatori, nomi, paesi, stati e coordinate delle stazioni.

sec_quarterly_financials

Lo spazio dei nomi sec_quarterly_financials include le seguenti tabelle:

Nome Descrizione
numbers Dati numerici dei rendiconti finanziari estratti dalle dichiarazioni trimestrali della Securities and Exchange Commission (SEC) degli Stati Uniti.

stackoverflow

Lo spazio dei nomi stackoverflow include le seguenti tabelle:

Nome Descrizione
posts_answers Post di risposta di Stack Overflow, inclusi testo del corpo, punteggio, data di creazione e dettagli dell'autore.
posts_questions Post di domande di Stack Overflow, inclusi titolo, testo del corpo, tag, numero di visualizzazioni e ID della risposta accettata.
users Profili utente di Stack Overflow, inclusi nome visualizzato, reputazione, data di creazione e numero di badge.

tpc_ds_1g

Lo spazio dei nomi tpc_ds_1g include le tabelle di benchmark TPC-DS da 1 GB:

Nome Descrizione
date_dim Tabella delle dimensioni delle date TPC-DS che mappa le date del calendario a periodi fiscali, trimestri e festività.
store_sales Tabella dei fatti delle vendite in negozio TPC-DS che registra le transazioni in negozio.

wikipedia

Lo spazio dei nomi wikipedia include le statistiche sulle visualizzazioni di pagina di Wikimedia e le entità Wikidata:

Nome Descrizione
pageviews_2015 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2015, partizionati per data.
pageviews_2016 Conteggi delle visualizzazioni di pagina di Wikipedia per ora per il 2016, partizionati per data.
pageviews_2017 Conteggi delle visualizzazioni di pagina di Wikipedia per ora per il 2017, partizionati per data.
pageviews_2018 Conteggi delle visualizzazioni di pagina di Wikipedia per ora per il 2018, partizionati per data.
pageviews_2019 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2019, partizionati per data.
pageviews_2020 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2020, partizionati per data.
pageviews_2021 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2021, partizionati per data.
pageviews_2022 Conteggi delle visualizzazioni di pagina di Wikipedia per ora per il 2022, partizionati per data.
pageviews_2023 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2023, partizionati per data.
pageviews_2024 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2024, partizionati per data.
pageviews_2025 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2025, partizionati per data.
pageviews_2026 Conteggi delle visualizzazioni di pagina di Wikipedia su base oraria per il 2026, partizionati per data.
table_activists Conteggi delle visualizzazioni di pagina di Wikipedia per gli articoli sugli attivisti.
table_actors Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli attori.
table_alumni Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli ex studenti.
table_artists Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli artisti.
table_athlete Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli atleti.
table_bands Conteggi delle visualizzazioni di pagina di Wikipedia per articoli su gruppi musicali.
table_born Numero di visualizzazioni di pagina di Wikipedia per gli articoli classificati in base all'anno di nascita.
table_businesspeople Numero di visualizzazioni di pagina di Wikipedia per articoli su imprenditori.
table_comedians Numero di visualizzazioni di pagina di Wikipedia per gli articoli sui comici.
table_composers Numero di visualizzazioni di pagina di Wikipedia per gli articoli sui compositori.
table_inventors Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli inventori.
table_politicians Numero di visualizzazioni di pagina di Wikipedia per articoli su politici.
table_scientists Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli scienziati.
table_singers Numero di visualizzazioni di pagina di Wikipedia per gli articoli sui cantanti.
table_writers Numero di visualizzazioni di pagina di Wikipedia per gli articoli sugli scrittori.
wikidata Entità della knowledge base strutturata di Wikidata, tra cui etichette, descrizioni, sitelink e dichiarazioni multilingue.

world_bank_health_population

Lo spazio dei nomi world_bank_health_population include statistiche della Banca Mondiale su salute, nutrizione e popolazione:

Nome Descrizione
country_series_definitions Definizioni e metadati che collegano i codici paese e i codici delle serie di indicatori.
country_summary Metadati dei paesi, inclusi nomi brevi e lunghi, codici ISO, unità di valuta e regioni.
health_nutrition_population Valori annuali degli indicatori di salute, nutrizione e popolazione per paese.
series_summary Metadati per gli indicatori di salute e popolazione, tra cui definizioni, unità di misura e periodicità.
series_times Metadati e descrizioni delle serie temporali per codice e anno della serie di indicatori.

world_bank_wdi

Lo spazio dei nomi world_bank_wdi include i dati degli Indicatori dello sviluppo mondiale (ISM) della Banca Mondiale:

Nome Descrizione
country_summary Metadati dei paesi, inclusi nomi brevi e lunghi, codici ISO, unità di valuta e gruppi di reddito.
indicators_data Valori annuali degli Indicatori dello sviluppo mondiale per paese e codice indicatore.
series_summary Definizioni, argomenti e unità di misura per le serie di Indicatori dello sviluppo mondiale.

Catalogo biglake-public-nyc-taxi-iceberg

Il catalogo biglake-public-nyc-taxi-iceberg (gs://biglake-public-nyc-taxi-iceberg) include le seguenti tabelle nello spazio dei nomi public_data in formato Apache Iceberg:

Nome Descrizione
nyc_taxicab Dati dei record delle corse della NYC Taxi and Limousine Commission (TLC).
nyc_taxicab_2021 Dati dei record delle corse della NYC Taxi and Limousine Commission (TLC) per il 2021.

Passaggi successivi