Set di dati pubblici Lakehouse

Google Cloud Lakehouse ospita set di dati pubblici di alta qualità forniti tramite il catalogo REST Iceberg di Apache, rendendoli disponibili al pubblico nell'ambito del Google Cloud programma per i set di dati pubblici.

Questi set di dati sono disponibili per l'accesso in sola lettura e puoi accedervi e integrarli nelle tue applicazioni utilizzando Apache Spark, Trino, Flink o BigQuery. Google paga per l'archiviazione di questi set di dati e fornisce l'accesso pubblico ai dati tramite Lakehouse. Paghi solo per le query eseguite sui dati.

Lo scopo di questi set di dati pubblici è ridurre la barriera all'ingresso per Iceberg. Non devi gestire l'infrastruttura per imparare Iceberg, devi connetterti. Puoi utilizzare questi set di dati per:

  • Utilizzare BigQuery (tramite Lakehouse) per eseguire query su queste tabelle direttamente utilizzando SQL, combinandole con i tuoi dati privati.
  • Testare le configurazioni del motore OSS (ad esempio Spark, Trino o Flink) rispetto a un catalogo REST live.

Prima di iniziare

  1. Accedi al tuo Google Cloud account. 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.

    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

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

Località dei set di dati pubblici

Ogni set di dati pubblico viene archiviato in una località specifica, ad esempio US o EU. I set di dati pubblici di Lakehouse sono archiviati nella località US Stati Uniti (più regioni) . Quando esegui una query su un set di dati pubblico, assicurati che la località di elaborazione sia compatibile con la località del set di dati.

Accedere 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 di servizi cloud.

Connettersi ad 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://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

Sostituisci PROJECT_ID con l'ID progetto Google Cloud .

Esempi di query

Una volta connesso, hai accesso SQL completo ai set di dati. Il set di dati dei taxi di New York è disponibile, 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 della corsa in base al numero di passeggeri. Mostra come Iceberg esegue la scansione efficiente dei file di dati senza dover elencare le directory utilizzando l'eliminazione 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 è Time Travel. Puoi eseguire query sulla tabella così com'era 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 query sulla tabella dei metadati della cronologia (ad esempio, SELECT * FROM bqms.public_data.nyc_taxicab.history), puoi trovare gli ID degli snapshot e tornare indietro per vedere come il set di dati è cresciuto nel tempo.

Per ulteriori informazioni, consulta Utilizzare il catalogo di runtime di Lakehouse con Spark, il catalogo REST Iceberg Catalogo e Cloud Storage.

Set di dati disponibili

Lakehouse fornisce tabelle di esempio su cui puoi eseguire query come tabelle Lakehouse.

Il set di dati biglake-public-nyc-taxi-iceberg include le seguenti tabelle in formato Apache Iceberg:

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

Passaggi successivi