Ensembles de données publics Lakehouse

Google Cloud Lakehouse héberge des ensembles de données publics de haute qualité diffusés via le catalogue REST Apache Iceberg, ce qui les met à la disposition du grand public dans le cadre du Google Cloud Programme d'ensembles de données publics.

Ces ensembles de données sont disponibles en accès en lecture seule. Vous pouvez y accéder et les intégrer à vos applications à l'aide d'Apache Spark, de Trino, de Flink ou de BigQuery. Google prend en charge le stockage de ces ensembles de données et fournit un accès public aux données via Lakehouse. Vous ne payez que pour les requêtes que vous effectuez sur les données.

L'objectif de ces ensembles de données publics est de réduire la barrière à l'entrée pour Iceberg. Vous n'avez pas besoin de gérer l'infrastructure pour découvrir Iceberg, il vous suffit de vous connecter. Vous pouvez utiliser ces ensembles de données pour :

  • Utiliser BigQuery (via Lakehouse) pour interroger directement ces tables à l'aide de SQL, en les combinant avec vos données privées.
  • Tester les configurations de votre moteur OSS (par exemple, Spark, Trino ou Flink) par rapport à un catalogue REST en direct.

Avant de commencer

  1. Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  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

Avant de vous connecter à Apache Spark, vous devez disposer des éléments suivants :

Emplacements des ensembles de données publics

Chaque ensemble de données public est stocké dans un emplacement spécifique, tel que US ou EU. Les ensembles de données publics Lakehouse sont stockés dans l'emplacement multirégional US emplacement. Lorsque vous interrogez un ensemble de données public, assurez-vous que votre emplacement de traitement est compatible avec l'emplacement de l'ensemble de données.

Accéder aux ensembles de données publics à l'aide d'Apache Spark

Étant donné que les ensembles de données publics Lakehouse sont diffusés via le catalogue REST Iceberg, vous pouvez y accéder à partir d'Apache Spark et d'autres moteurs compatibles. Vous pouvez vous connecter à l'ensemble de données public à l'aide de n'importe quel environnement Spark standard, tel qu'un environnement sur site, Managed Service pour Apache Spark ou d'autres fournisseurs cloud.

Se connecter à Apache Spark

Utilisez les options de configuration suivantes lorsque vous démarrez votre session Spark SQL. Ces options configurent un catalogue nommé lakehouse-sample qui pointe vers le point de terminaison REST public.

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

Remplacez PROJECT_ID par l'ID de votre Google Cloud projet.

Exemples de requêtes

Une fois connecté, vous disposez d'un accès SQL complet aux ensembles de données. L'ensemble de données NYC Taxi est disponible et modélisé sous forme de table Iceberg pour illustrer les fonctionnalités de partitionnement et de métadonnées.

La requête suivante agrège des millions d'enregistrements pour trouver le tarif moyen et la distance parcourue par nombre de passagers. Elle montre comment Iceberg analyse efficacement les fichiers de données sans avoir à lister les répertoires à l'aide de l'élagage de partition :

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;

L'une des fonctionnalités les plus puissantes d'Iceberg est le voyage dans le temps. Vous pouvez interroger la table telle qu'elle existait à un moment précis dans le passé. La requête suivante vous permet d'auditer les modifications en comparant le nombre de lignes de la version actuelle à celui d'un instantané spécifique :

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

En interrogeant la table de métadonnées d'historique (par exemple, SELECT * FROM bqms.public_data.nyc_taxicab.history), vous pouvez trouver des ID d'instantanés et revenir en arrière pour voir comment l'ensemble de données a évolué au fil du temps.

Pour en savoir plus, consultez Utiliser le catalogue d'exécution Lakehouse avec Spark, le catalogue REST Iceberg Catalog & Cloud Storage.

Ensembles de données disponibles

Lakehouse fournit des exemples de tables que vous pouvez interroger en tant que tables Lakehouse.

L'ensemble de données biglake-public-nyc-taxi-iceberg inclut les tables suivantes au format Apache Iceberg :

Nom Description
nyc_taxicab Données d'enregistrement des courses de la NYC Taxi and Limousine Commission (TLC).

Étape suivante