Set data publik lakehouse

Lakehouse untuk Apache Iceberg menghosting set data publik berkualitas tinggi yang disajikan melalui Apache Iceberg REST Catalog, sehingga set data tersebut tersedia untuk masyarakat umum sebagai bagian dari Google Cloud Program Set Data Publik.

Set data ini tersedia untuk akses hanya baca, dan Anda dapat mengakses serta mengintegrasikannya ke dalam aplikasi menggunakan Apache Spark, Trino, Flink, atau BigQuery. Google membayar penyimpanan set data ini dan memberikan akses publik ke data tersebut melalui Lakehouse. Anda hanya membayar untuk kueri yang Anda jalankan pada data tersebut.

Tujuan dari set data publik ini adalah untuk menurunkan hambatan masuk bagi Iceberg. Anda tidak perlu mengelola infrastruktur untuk mempelajari Iceberg, Anda hanya perlu terhubung. Anda dapat menggunakan set data ini untuk:

  • Gunakan BigQuery (melalui Lakehouse) untuk membuat kueri tabel ini secara langsung menggunakan SQL, dengan menggabungkannya dengan data pribadi Anda.
  • Uji konfigurasi mesin OSS Anda (misalnya, Spark, Trino, atau Flink) terhadap Katalog REST aktif.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy 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

Sebelum terhubung dengan Apache Spark, Anda harus memiliki hal berikut:

Lokasi set data publik

Setiap set data publik disimpan di lokasi tertentu seperti US atau EU. Set data publik Lakehouse disimpan di lokasi multi-region US. Saat Anda membuat kueri set data publik, pastikan lokasi pemrosesan Anda kompatibel dengan lokasi set data.

Mengakses set data publik menggunakan Apache Spark

Karena set data publik Lakehouse disajikan melalui Katalog REST Iceberg, Anda dapat mengaksesnya dari Apache Spark dan mesin yang kompatibel lainnya. Anda dapat terhubung ke set data publik menggunakan lingkungan Spark standar apa pun seperti lokal, Managed Service untuk Apache Spark, atau vendor cloud lainnya.

Menghubungkan dengan Apache Spark

Gunakan tanda konfigurasi berikut saat memulai sesi Spark SQL. Flag ini mengonfigurasi katalog bernama lakehouse-sample yang mengarah ke endpoint REST publik.

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

Ganti PROJECT_ID dengan project ID Google Cloud Anda.

Contoh kueri

Setelah terhubung, Anda memiliki akses SQL penuh ke set data. Set data NYC Taxi tersedia, dimodelkan sebagai tabel Iceberg untuk mendemonstrasikan kemampuan partisi dan metadata.

Kueri berikut menggabungkan jutaan data untuk menemukan tarif rata-rata dan jarak perjalanan menurut jumlah penumpang. Bagaimana Iceberg memindai file data secara efisien tanpa perlu mencantumkan direktori menggunakan penghapusan partisi:

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;

Salah satu fitur Iceberg yang paling canggih adalah Time Travel. Anda dapat membuat kueri tabel seperti yang ada pada titik waktu tertentu di masa lalu. Kueri berikut memungkinkan Anda mengaudit perubahan dengan membandingkan jumlah baris versi saat ini dengan snapshot tertentu:

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

Dengan membuat kueri tabel metadata histori (misalnya, SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history), Anda dapat menemukan ID snapshot dan kembali ke waktu sebelumnya untuk melihat perkembangan set data dari waktu ke waktu.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan katalog runtime Lakehouse dengan Spark, Iceberg REST Catalog & Cloud Storage.

Set data yang tersedia

Lakehouse menyediakan tabel contoh yang dapat Anda kueri sebagai tabel Lakehouse.

Set data biglake-public-nyc-taxi-iceberg mencakup tabel berikut dalam format Apache Iceberg:

Nama Deskripsi
nyc_taxicab Data Catatan Perjalanan NYC Taxi and Limousine Commission (TLC).

Langkah berikutnya