Google Cloud Lakehouse hostet hochwertige öffentliche Datasets, die über den Apache Iceberg REST-Katalog bereitgestellt werden. Dadurch sind sie im Rahmen des Google Cloud-Programms für öffentliche Datasets für die Allgemeinheit verfügbar.
Diese Datasets sind für den schreibgeschützten Zugriff verfügbar. Sie können mit Apache Spark, Trino, Flink oder BigQuery darauf zugreifen und sie in Ihre Anwendungen einbinden. Google bezahlt die Speicherung dieser Datasets und bietet über Lakehouse öffentlichen Zugriff auf die Daten. Sie bezahlen nur für die Abfrage der Daten.
Ziel dieser öffentlichen Datasets ist es, die Einstiegshürde für Iceberg zu senken. Sie müssen keine Infrastruktur verwalten, um Iceberg zu lernen. Sie müssen nur eine Verbindung herstellen. Sie können diese Datasets für folgende Zwecke verwenden:
- Sie können diese Tabellen mit BigQuery (über Lakehouse) direkt mit SQL abfragen und mit Ihren privaten Daten kombinieren.
- Testen Sie die Konfigurationen Ihrer OSS-Engine (z. B. Spark, Trino oder Flink) anhand eines aktiven REST-Katalogs.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.
Bevor Sie eine Verbindung mit Apache Spark herstellen, benötigen Sie Folgendes:
- Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC), die in Ihrer Umgebung eingerichtet sind.
Öffentliche Dataset-Standorte
Jedes öffentliche Dataset wird an einem bestimmten Standort wie US oder EU gespeichert. Die öffentlichen Lakehouse-Datasets sind am multiregionalen Standort US gespeichert. Wenn Sie ein öffentliches Dataset abfragen, muss der Verarbeitungsstandort mit dem Speicherort des Datasets kompatibel sein.
Mit Apache Spark auf öffentliche Datasets zugreifen
Da öffentliche Lakehouse-Datasets über den Iceberg REST-Katalog bereitgestellt werden, können Sie über Apache Spark und andere kompatible Engines darauf zugreifen. Sie können eine Verbindung zum öffentlichen Dataset über jede Standard-Spark-Umgebung herstellen, z. B. lokal, über Managed Service for Apache Spark oder über andere Cloud-Anbieter.
Verbindung zu Apache Spark herstellen
Verwenden Sie die folgenden Konfigurationsflags, wenn Sie Ihre Spark SQL-Sitzung starten.
Mit diesen Flags wird ein Katalog namens lakehouse-sample konfiguriert, der auf den öffentlichen REST-Endpunkt verweist.
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
Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .
Beispielabfragen
Sobald die Verbindung hergestellt ist, haben Sie vollen SQL-Zugriff auf die Datasets. Das NYC Taxi-Dataset ist als Iceberg-Tabelle verfügbar, um die Partitionierungs- und Metadatenfunktionen zu demonstrieren.
In der folgenden Abfrage werden Millionen von Datensätzen zusammengefasst, um den durchschnittlichen Fahrpreis und die durchschnittliche Fahrtstrecke nach Anzahl der Fahrgäste zu ermitteln. Darin wird gezeigt, wie Iceberg Datendateien effizient scannt, ohne Verzeichnisse auflisten zu müssen, indem Partitionen bereinigt werden:
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;
Eine der leistungsstärksten Funktionen von Iceberg ist „Time Travel“. Sie können die Tabelle so abfragen, wie sie zu einem bestimmten Zeitpunkt in der Vergangenheit vorhanden war. Mit der folgenden Abfrage können Sie Änderungen prüfen, indem Sie die Zeilenanzahl der aktuellen Version mit der eines bestimmten Snapshots vergleichen:
-- 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;
Wenn Sie die Metadatentabelle für den Verlauf abfragen (z. B. SELECT * FROM
bqms.public_data.nyc_taxicab.history), können Sie Snapshot-IDs finden und nachvollziehen, wie das Dataset im Laufe der Zeit gewachsen ist.
Weitere Informationen finden Sie unter Lakehouse-Laufzeitkatalog mit Spark, Iceberg REST-Katalog und Cloud Storage verwenden.
Verfügbare Datasets
Lakehouse bietet Beispieltabellen, die Sie als Lakehouse-Tabellen abfragen können.
Das Dataset biglake-public-nyc-taxi-iceberg enthält die folgenden Tabellen im Apache Iceberg-Format:
| Name | Beschreibung |
|---|---|
nyc_taxicab |
Fahrtdaten der NYC Taxi and Limousine Commission (TLC). |
Nächste Schritte
- Weitere Informationen zu Lakehouse Iceberg-Tabellen
- Weitere Informationen zum Iceberg-REST-Katalog des Lakehouse-Laufzeitkatalogs