レイクハウスの一般公開データセット

Google Cloud Lakehouse は、 Apache Iceberg REST カタログを通じて提供される高品質の一般公開データセットをホストし、 一般公開データセット プログラムの一環として一般公開しています。Google Cloud

これらのデータセットは読み取り専用でアクセスでき、Apache Spark、Trino、Flink、BigQuery を使用してアクセスしてアプリケーションに統合できます。Google は、これらのデータセットの保存費用を負担しており、Lakehouse を通じてデータへの公開アクセスを提供しています。データで実行したクエリにのみ料金が発生します。

これらの一般公開データセットの目的は、Iceberg の導入のハードルを下げることです。Iceberg を学習するためにインフラストラクチャを管理する必要はありません。接続するだけです。 これらのデータセットを使用して、次のことができます。

  • BigQuery(Lakehouse 経由)を使用して、SQL でこれらのテーブルに直接クエリを実行し、プライベート データと組み合わせます。
  • ライブ REST カタログに対して OSS エンジン(Spark、Trino、Flink など)の構成をテストします。

始める前に

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  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

Apache Spark に接続する前に、次のものが必要です。

一般公開データセットのロケーション

一般公開データセットは、USEU などの特定のロケーションに保存されています。 Lakehouse 一般公開データセットは、US マルチリージョン ロケーションに保存されています。一般公開データセットに対するクエリを実行する場合は、処理ロケーションがデータセットのロケーションと互換性があることを確認してください。

Apache Spark を使用して一般公開データセットにアクセスする

Lakehouse 一般公開データセットは Iceberg REST カタログ を通じて提供されるため、Apache Spark やその他の互換性のあるエンジンからアクセスできます。オンプレミス、Managed Service for Apache Spark などの標準的な Spark 環境や、他のクラウド ベンダーを使用して、一般公開データセットに接続できます。

Apache Spark に接続する

Spark SQL セッションを開始するときに、次の構成フラグを使用します。 これらのフラグは、一般公開 REST エンドポイントを指す lakehouse-sample という名前のカタログを構成します。

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

PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

クエリの例

接続すると、データセットに完全な SQL アクセス権が付与されます。ニューヨーク市のタクシー データセットは、パーティショニングとメタデータの機能を示すために、Iceberg テーブルとしてモデル化されています。

次のクエリは、数百万件のレコードを集計して、乗客数別の平均運賃と移動距離を調べます。パーティション プルーニングを使用して、ディレクトリを一覧表示しなくても Iceberg がデータファイルを効率的にスキャンする方法を示します。

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;

Iceberg の最も強力な機能の一つに、タイムトラベルがあります。過去の特定の時点に存在していたテーブルに対してクエリを実行できます。次のクエリでは、現在のバージョンの行数と特定のスナップショットを比較して、変更を監査できます。

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

履歴メタデータ テーブル(SELECT * FROM bqms.public_data.nyc_taxicab.history など)にクエリを実行すると、スナップショット ID を確認し、過去に遡ってデータセットがどのように増加したかを確認できます。

詳細については、Lakehouse ランタイム カタログを Spark、Iceberg REST カタログ、 Cloud Storage で使用するをご覧ください。

利用可能なデータセット

Lakehouse には、Lakehouse テーブルとしてクエリできるサンプル テーブルが用意されています。

biglake-public-nyc-taxi-iceberg データセットには、Apache Iceberg 形式の次のテーブルが含まれています。

名前 説明
nyc_taxicab ニューヨーク市タクシー リムジン委員会(TLC)の乗車記録データ。

次のステップ