Set data publik Borderless Lakehouse

Lakehouse Tanpa Batas memungkinkan Anda mengkueri set data publik hanya baca yang disajikan melalui endpoint katalog REST Apache Iceberg sebagai bagian dari Program Set Data PublikGoogle Cloud . Anda dapat menghubungkan BigQuery, Managed Service untuk Apache Spark, Trino, atau Apache Flink untuk menggabungkan tabel ini dengan data pribadi Anda atau menguji konfigurasi mesin open source terhadap endpoint katalog REST Apache Iceberg aktif tanpa mengelola infrastruktur penyimpanan.

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.

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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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 mengkueri 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 Iceberg REST Catalog, Anda dapat mengaksesnya dari Apache Spark dan mesin lain yang kompatibel. 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 flag konfigurasi berikut saat memulai sesi Spark SQL Anda. 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://CATALOG_NAME \
  --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 kode berikut:

  • CATALOG_NAME: nama katalog set data publik, seperti lakehouse-public-data atau biglake-public-nyc-taxi-iceberg.
  • PROJECT_ID: Project ID Google Cloud Anda.

Menghubungkan dengan PySpark dan Managed Service untuk Apache Spark

Anda juga dapat menggunakan notebook Spark serverless terkelola di Managed Service untuk Apache Spark untuk mengkueri tabel tanpa membuat atau mengelola cluster:

from google.cloud.dataproc_v1 import Session
from google.cloud.dataproc_spark_connect import DataprocSparkSession

PROJECT_ID = "PROJECT_ID"
spark_catalog = "CATALOG_NAME"

session = Session()
session.runtime_config.properties = {
  "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
  f"spark.sql.catalog.{spark_catalog}": "org.apache.iceberg.spark.SparkCatalog",
  f"spark.sql.catalog.{spark_catalog}.type": "rest",
  f"spark.sql.catalog.{spark_catalog}.uri": "https://biglake.googleapis.com/iceberg/v1/restcatalog",
  f"spark.sql.catalog.{spark_catalog}.rest.auth.type": "org.apache.iceberg.gcp.auth.GoogleAuthManager",
  f"spark.sql.catalog.{spark_catalog}.io-impl": "org.apache.iceberg.gcp.gcs.GCSFileIO",
  f"spark.sql.catalog.{spark_catalog}.header.X-Iceberg-Access-Delegation": "vended-credentials",
  f"spark.sql.catalog.{spark_catalog}.warehouse": f"gs://{spark_catalog}",
  f"spark.sql.catalog.{spark_catalog}.header.x-goog-user-project": PROJECT_ID,
}

spark = (
   DataprocSparkSession.builder
     .appName("Lakehouse Public Data Demo")
     .dataprocSessionConfig(session)
     .getOrCreate()
)
spark.conf.set("spark.sql.defaultCatalog", spark_catalog)

Ganti kode berikut:

  • PROJECT_ID: Project ID Google Cloud Anda.
  • CATALOG_NAME: nama katalog set data publik, seperti lakehouse-public-data atau biglake-public-nyc-taxi-iceberg.

Contoh kueri

Setelah terhubung, Anda memiliki akses SQL penuh ke set data.

Membuat kueri tayangan halaman Wikipedia dan commit GitHub

Saat terhubung ke katalog lakehouse-public-data dalam sesi PySpark, Anda dapat membuat kueri jumlah penayangan Wikipedia bulanan untuk artikel terkait BigQuery:

df1 = spark.sql("""
SELECT
  title,
  wiki,
  SUM(views) AS total_views
FROM wikipedia.pageviews_2026
WHERE datehour >= TIMESTAMP '2026-01-01 00:00:00'
  AND datehour <  TIMESTAMP '2026-02-01 00:00:00'
  AND LOWER(title) LIKE '%bigquery%'
GROUP BY title, wiki
ORDER BY total_views DESC
LIMIT 20
""")
df1.show(10)

Anda juga dapat mengambil commit GitHub terbaru yang merujuk ke Iceberg:

df2 = spark.sql("""
SELECT
  commits.commit,
  commits.subject,
  commits.message,
  commits.author.name AS author_name,
  timestamp_seconds(commits.committer.date.seconds) AS commit_time,
  repo_name
FROM github_repos.commits AS commits
WHERE LOWER(commits.subject) LIKE '%iceberg%'
   OR LOWER(commits.message) LIKE '%iceberg%'
ORDER BY commit_time DESC
LIMIT 50
""")
df2.show(10)

Membuat kueri set data NYC Taxi

Set data NYC Taxi tersedia di katalog biglake-public-nyc-taxi-iceberg, yang dimodelkan sebagai tabel Iceberg untuk menunjukkan kemampuan partisi dan metadata.

Kueri berikut menggabungkan jutaan data untuk menemukan tarif rata-rata dan jarak perjalanan berdasarkan jumlah penumpang. Contoh ini menunjukkan cara Iceberg memindai file data secara efisien tanpa perlu mencantumkan direktori menggunakan pemangkasan 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 mengkueri tabel seperti yang ada pada titik 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 mengkueri tabel metadata histori (misalnya, SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history), Anda dapat menemukan ID snapshot dan melakukan perjalanan kembali untuk melihat bagaimana set data berkembang dari waktu ke waktu.

Untuk mengetahui informasi selengkapnya, lihat Membuat kueri tabel Apache Iceberg dengan Lakehouse.

Set data yang tersedia

Lakehouse menyediakan set data publik dan tabel contoh yang dapat Anda kueri sebagai tabel Apache Iceberg di dua katalog publik: lakehouse-public-data dan biglake-public-nyc-taxi-iceberg.

Katalog lakehouse-public-data

Katalog lakehouse-public-data (gs://lakehouse-public-data) mencakup namespace dan tabel berikut dalam format Apache Iceberg.

austin_bikeshare

Namespace austin_bikeshare mencakup tabel berikut:

Nama Deskripsi
bikeshare_trips Data perjalanan Austin Bikeshare, termasuk durasi perjalanan, stempel waktu mulai dan berakhir, serta detail stasiun.

bls

Namespace bls mencakup statistik ekonomi yang disediakan oleh US Bureau of Labor Statistics:

Nama Deskripsi
cpi_u Data deret Indeks Harga Konsumen untuk Semua Konsumen Perkotaan (CPI-U).
unemployment_cps Statistik pengangguran Current Population Survey (CPS).

census_bureau_acs

Namespace census_bureau_acs mencakup tabel berikut:

Nama Deskripsi
state_2020_5yr Estimasi tingkat negara bagian selama 5 tahun untuk tahun 2020 dari American Community Survey (ACS) US Census Bureau.

chicago_taxi_trips

Namespace chicago_taxi_trips mencakup tabel berikut:

Nama Deskripsi
taxi_trips Data perjalanan taksi Chicago, termasuk stempel waktu perjalanan, jarak, tarif, serta lokasi penjemputan dan pengantaran.

crypto_ethereum

Namespace crypto_ethereum mencakup tabel berikut:

Nama Deskripsi
transactions Data transaksi blockchain Ethereum, termasuk alamat pengirim dan penerima, nilai, dan metrik gas.

ga4_obfuscated_sample_ecommerce

Namespace ga4_obfuscated_sample_ecommerce mencakup tabel berikut:

Nama Deskripsi
events_20210131 Data peristiwa Google Analytics 4 yang di-obfuscate yang mengemulasi penerapan e-commerce web untuk 31 Januari 2021.

geo_openstreetmap

Namespace geo_openstreetmap mencakup tabel berikut:

Nama Deskripsi
planet_features Fitur geografis global OpenStreetMap, termasuk jenis fitur, tag, dan geometri.

geo_us_boundaries

Namespace geo_us_boundaries mencakup tabel berikut:

Nama Deskripsi
zip_codes Batas Kode Pos AS, termasuk kota, county, kode FIPS negara bagian, dan geometri geografis.

github_repos

Namespace github_repos mencakup data dari repositori publik berlisensi open source di GitHub:

Nama Deskripsi
commits Commit Git unik dari repositori open source di GitHub, yang dikelompokkan menurut repositori.
contents Konten file unik dari file teks berukuran kurang dari 1 MiB di cabang HEAD.
languages Bahasa pemrograman menurut repositori seperti yang dilaporkan oleh GitHub API.
licenses Kode SPDX lisensi open source untuk setiap repositori.
sample_commits Contoh commit dari tabel commits.
sample_contents Subset 10% konten file teks yang diambil sampelnya secara acak dari tabel contents.
sample_files Metadata file sampel untuk file di HEAD dari 400.000 repositori teratas yang tercantum di sample_repos.
sample_repos 400.000 repositori GitHub teratas berdasarkan jumlah bintang.

Namespace google_trends mencakup tabel berikut:

Nama Deskripsi
top_terms 25 istilah penelusuran teratas harian di Amerika Serikat dengan skor, peringkat, waktu, dan designated market area (DMA).

imdb

Namespace imdb mencakup tabel berikut:

Nama Deskripsi
title_basics Metadata judul IMDb, termasuk jenis judul, judul utama dan asli, tahun rilis, durasi, dan genre.
title_ratings Rata-rata rating pengguna IMDb dan jumlah suara untuk judul.

iowa_liquor_sales

Namespace iowa_liquor_sales mencakup tabel berikut:

Nama Deskripsi
sales Catatan pembelian minuman keras grosir di Negara Bagian Iowa oleh retailer untuk dijual kepada individu sejak tahun 2012.

ml_datasets

Namespace ml_datasets mencakup tabel benchmark machine learning:

Nama Deskripsi
census_adult_income Set data pendapatan orang dewasa sensus yang digunakan untuk tugas klasifikasi yang memprediksi apakah pendapatan melebihi $50.000 per tahun.
penguins Pengukuran penguin Kepulauan Palmer, termasuk spesies, pulau, dimensi paruh, panjang sirip, dan massa tubuh.
ulb_fraud_detection Transaksi kartu kredit anonim oleh pemegang kartu Eropa dari September 2013 untuk tolok ukur deteksi penipuan.

new_york_citibike

Namespace new_york_citibike mencakup tabel berikut:

Nama Deskripsi
citibike_trips Data perjalanan Citi Bike di New York City, termasuk durasi perjalanan, stempel waktu, lokasi stasiun, dan demografi pengendara.

new_york_taxi_trips

Namespace new_york_taxi_trips mencakup tabel berikut:

Nama Deskripsi
taxi_zone_geom ID, nama, wilayah, dan geometri batas zona taksi NYC Taxi and Limousine Commission (TLC).
tlc_green_trips_2022 Data perjalanan taksi hijau NYC TLC untuk tahun 2022.
tlc_yellow_trips_2022 Data perjalanan taksi kuning NYC TLC untuk tahun 2022.

noaa_gsod

Namespace noaa_gsod mencakup data cuaca Global Surface Summary of the Day (GSOD) dari National Oceanic and Atmospheric Administration (NOAA):

Nama Deskripsi
gsod2023 Pengamatan ringkasan cuaca permukaan global harian untuk tahun 2023.
stations Metadata stasiun cuaca NOAA, termasuk ID stasiun, nama, negara, negara bagian, dan koordinat.

sec_quarterly_financials

Namespace sec_quarterly_financials mencakup tabel berikut:

Nama Deskripsi
numbers Data laporan keuangan numerik yang diekstrak dari pelaporan triwulanan Komisi Sekuritas dan Bursa (SEC) Amerika Serikat.

stackoverflow

Namespace stackoverflow mencakup tabel berikut:

Nama Deskripsi
posts_answers Postingan jawaban Stack Overflow, termasuk teks isi, skor, tanggal pembuatan, dan detail penulis.
posts_questions Postingan pertanyaan Stack Overflow, termasuk judul, teks isi, tag, jumlah penayangan, dan ID jawaban yang diterima.
users Profil pengguna Stack Overflow, termasuk nama tampilan, reputasi, tanggal pembuatan, dan jumlah badge.

tpc_ds_1g

Namespace tpc_ds_1g mencakup tabel benchmark TPC-DS 1 GB:

Nama Deskripsi
date_dim Tabel dimensi tanggal TPC-DS yang memetakan tanggal kalender ke periode fiskal, kuartal, dan hari libur.
store_sales Tabel fakta penjualan toko TPC-DS yang mencatat transaksi toko retail.

wikipedia

Namespace wikipedia mencakup statistik tayangan halaman Wikimedia dan entity Wikidata:

Nama Deskripsi
pageviews_2015 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2015, yang dipartisi berdasarkan tanggal.
pageviews_2016 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2016, yang dipartisi berdasarkan tanggal.
pageviews_2017 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2017, yang dipartisi berdasarkan tanggal.
pageviews_2018 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2018, yang dipartisi berdasarkan tanggal.
pageviews_2019 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2019, yang dipartisi berdasarkan tanggal.
pageviews_2020 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2020, yang dipartisi berdasarkan tanggal.
pageviews_2021 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2021, yang dipartisi berdasarkan tanggal.
pageviews_2022 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2022, yang dipartisi berdasarkan tanggal.
pageviews_2023 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2023, yang dipartisi berdasarkan tanggal.
pageviews_2024 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2024, yang dipartisi berdasarkan tanggal.
pageviews_2025 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2025, yang dipartisi berdasarkan tanggal.
pageviews_2026 Jumlah tayangan halaman Wikipedia per jam untuk tahun 2026, yang dipartisi berdasarkan tanggal.
table_activists Jumlah tayangan halaman Wikipedia untuk artikel tentang aktivis.
table_actors Jumlah tayangan halaman Wikipedia untuk artikel tentang aktor.
table_alumni Jumlah tayangan halaman Wikipedia untuk artikel tentang alumni.
table_artists Jumlah tayangan halaman Wikipedia untuk artikel tentang artis.
table_athlete Jumlah tayangan halaman Wikipedia untuk artikel tentang atlet.
table_bands Jumlah tayangan halaman Wikipedia untuk artikel tentang band musik.
table_born Jumlah tayangan halaman Wikipedia untuk artikel yang dikategorikan berdasarkan tahun kelahiran.
table_businesspeople Jumlah tayangan halaman Wikipedia untuk artikel tentang pebisnis.
table_comedians Jumlah tayangan halaman Wikipedia untuk artikel tentang komedian.
table_composers Jumlah tayangan halaman Wikipedia untuk artikel tentang komposer.
table_inventors Jumlah tayangan halaman Wikipedia untuk artikel tentang penemu.
table_politicians Jumlah tayangan halaman Wikipedia untuk artikel tentang politisi.
table_scientists Jumlah tayangan halaman Wikipedia untuk artikel tentang ilmuwan.
table_singers Jumlah tayangan halaman Wikipedia untuk artikel tentang penyanyi.
table_writers Jumlah tayangan halaman Wikipedia untuk artikel tentang penulis.
wikidata Entity pusat informasi Wikidata terstruktur, termasuk label, deskripsi, sitelink, dan klaim multibahasa.

world_bank_health_population

Namespace world_bank_health_population mencakup statistik kesehatan, nutrisi, dan populasi Bank Dunia:

Nama Deskripsi
country_series_definitions Definisi dan metadata yang menautkan kode negara dan kode rangkaian indikator.
country_summary Metadata negara, termasuk nama pendek dan panjang, kode ISO, unit mata uang, dan wilayah.
health_nutrition_population Nilai indikator kesehatan, nutrisi, dan populasi tahunan menurut negara.
series_summary Metadata untuk indikator kesehatan dan populasi, termasuk definisi, satuan ukuran, dan periodisitas.
series_times Metadata dan deskripsi deret waktu menurut kode dan tahun deret indikator.

world_bank_wdi

Namespace world_bank_wdi mencakup data Indikator Perkembangan Dunia (WDI) Bank Dunia:

Nama Deskripsi
country_summary Metadata negara, termasuk nama pendek dan panjang, kode ISO, unit mata uang, dan kelompok pendapatan.
indicators_data Nilai Indikator Pembangunan Dunia tahunan menurut negara dan kode indikator.
series_summary Definisi, topik, dan unit pengukuran untuk rangkaian Indikator Pembangunan Dunia.

Katalog biglake-public-nyc-taxi-iceberg

Katalog biglake-public-nyc-taxi-iceberg (gs://biglake-public-nyc-taxi-iceberg) menyertakan tabel berikut dalam namespace public_data dalam format Apache Iceberg:

Nama Deskripsi
nyc_taxicab Data Catatan Perjalanan NYC Taxi and Limousine Commission (TLC).
nyc_taxicab_2021 Data Catatan Perjalanan NYC Taxi and Limousine Commission (TLC) untuk tahun 2021.

Langkah berikutnya