Set di dati pubblici Lakehouse

Lakehouse for Apache Iceberg ospita set di dati pubblici di alta qualità forniti tramite il catalogo REST di Apache Iceberg, rendendoli disponibili al pubblico nell'ambito del Google Cloudprogramma 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 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.

L'obiettivo di questi set di dati pubblici è ridurre la barriera all'ingresso per Iceberg. Per imparare Iceberg non devi gestire l'infrastruttura, ma devi connetterti. Puoi utilizzare questi set di dati per:

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

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.

    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 è archiviato in una località specifica, ad esempio US o EU. I set di dati pubblici Lakehouse sono archiviati nella località multiregionale US. Quando esegui una query su un set di dati pubblico, assicurati che la posizione di elaborazione sia compatibile con la posizione 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 NYC Taxi è 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 del viaggio in base al numero di passeggeri. Mostra come Iceberg esegue la scansione in modo 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 conteggio delle righe della versione attuale 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 lakehouse-sample.public_data.nyc_taxicab.history), puoi trovare gli ID snapshot e tornare indietro per vedere come è cresciuto il set di dati nel tempo.

Per saperne di più, consulta Utilizzare il catalogo runtime Lakehouse con Spark, il catalogo REST Iceberg 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 di registrazione delle corse della NYC Taxi and Limousine Commission (TLC).

Passaggi successivi