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

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

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

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

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

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $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 Catalog を介して提供されるため、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 lakehouse-sample.public_data.nyc_taxicab.history など)にクエリを実行すると、スナップショット ID を見つけて、データセットが時間の経過とともにどのように増加したかを確認できます。

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

利用可能なデータセット

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

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

名前 説明
nyc_taxicab NYC Taxi and Limousine Commission(TLC)の乗車記録データ。

次のステップ