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
- 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.
-
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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. 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.-
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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. 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.
Sebelum terhubung dengan Apache Spark, Anda harus memiliki hal berikut:
- Kredensial Default Aplikasi (ADC) yang disiapkan di lingkungan Anda.
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, sepertilakehouse-public-dataataubiglake-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, sepertilakehouse-public-dataataubiglake-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. |
google_trends
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
- Pelajari lebih lanjut tabel Apache Iceberg yang dikelola oleh Lakehouse.
- Pelajari lebih lanjut Katalog REST Iceberg katalog runtime Lakehouse.