無邊界 Lakehouse 透過 Apache Iceberg REST 目錄提供高品質的公開資料集,並透過Google Cloud 公開資料集計畫開放一般大眾使用。
這些資料集僅供讀取,您可以使用 Apache Spark、Trino、Flink 或 BigQuery 存取這些資料集,並整合至應用程式。Google 會支付這些資料集的儲存費用,並透過 Lakehouse 提供資料的公開存取權。您只需為對資料執行的查詢付費。
這些公開資料集旨在降低 Iceberg 的入門門檻。您不需要管理基礎架構來學習 Iceberg,只要連線即可。 這些資料集可用於:
- 使用 BigQuery (透過 Lakehouse) 直接以 SQL 查詢這些資料表,並與私人資料合併。
- 針對即時 REST 目錄測試 OSS 引擎 (例如 Spark、Trino 或 Flink) 設定。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自體驗產品的實際應用成效。新客戶還能獲得價值 $300 美元的免費抵免額,能用於執行、測試及部署工作負載。
-
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.
如要連線至 Apache Spark,您必須具備下列條件:
- 環境中已設定應用程式預設憑證 (ADC)。
公開資料集位置
每個公開資料集都儲存在特定位置,例如 US 或 EU。Lakehouse 公開資料集存放在US多區域位置。查詢公開資料集時,請確保處理位置與資料集位置相容。
使用 Apache Spark 存取公開資料集
由於 Lakehouse 公開資料集是透過 Iceberg REST 目錄提供,因此您可以從 Apache Spark 和其他相容引擎存取這些資料集。您可以使用任何標準 Spark 環境 (例如地端部署、Managed Service for Apache Spark 或其他雲端供應商) 連線至公開資料集。
連線至 Apache Spark
啟動 Spark SQL 工作階段時,請使用下列設定旗標。
這些旗標會設定名為 lakehouse-sample 的目錄,指向公開 REST 端點:
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
更改下列內容:
CATALOG_NAME:公開資料集目錄名稱,例如lakehouse-public-data或biglake-public-nyc-taxi-iceberg。PROJECT_ID:您的 Google Cloud 專案 ID。
透過 PySpark 和 Managed Service for Apache Spark 連線
您也可以在 Managed Service for Apache Spark 中使用代管的無伺服器 Spark 筆記本,查詢資料表,不必建立或管理叢集:
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)
更改下列內容:
PROJECT_ID:您的 Google Cloud 專案 ID。CATALOG_NAME:公開資料集目錄名稱,例如lakehouse-public-data或biglake-public-nyc-taxi-iceberg。
查詢範例
連線後,您就能透過 SQL 完整存取資料集。
查詢維基百科網頁瀏覽量和 GitHub 提交
在 PySpark 工作階段中連結至 lakehouse-public-data 目錄後,您可以查詢 BigQuery 相關文章的每月 Wikipedia 瀏覽次數:
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)
您也可以擷取最近參照 Iceberg 的 GitHub 提交:
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)
查詢紐約市計程車資料集
您可以在biglake-public-nyc-taxi-iceberg目錄中找到 NYC Taxi 資料集,該資料集會以 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,並回溯查看資料集隨時間的成長情況。
詳情請參閱「搭配 Cloud Storage 使用 Iceberg REST 目錄」。
可用的資料集
Lakehouse 提供公開資料集和範例資料表,您可以在兩個公開目錄 (lakehouse-public-data 和 biglake-public-nyc-taxi-iceberg) 中,以 Apache Iceberg 資料表的形式查詢這些資料。
lakehouse-public-data 目錄
lakehouse-public-data 目錄 (gs://lakehouse-public-data) 包含 Apache Iceberg 格式的下列命名空間和資料表。
austin_bikeshare
austin_bikeshare 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
bikeshare_trips |
奧斯丁共享單車行程記錄,包括行程時間、開始和結束時間戳記,以及車站詳細資料。 |
bls
bls 命名空間包含美國勞工統計局提供的經濟統計資料:
| 名稱 | 說明 |
|---|---|
cpi_u |
所有都市消費者物價指數 (CPI-U) 序列資料。 |
unemployment_cps |
目前人口普查 (CPS) 失業統計資料。 |
census_bureau_acs
census_bureau_acs 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
state_2020_5yr |
美國人口普查局美國社區問卷調查 (ACS) 2020 年 5 年期州級預估資料。 |
chicago_taxi_trips
chicago_taxi_trips 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
taxi_trips |
芝加哥計程車行程記錄,包括行程時間戳記、距離、車資,以及上車和下車地點。 |
crypto_ethereum
crypto_ethereum 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
transactions |
以太坊區塊鏈交易記錄,包括寄件者和收件者地址、價值和瓦斯指標。 |
ga4_obfuscated_sample_ecommerce
ga4_obfuscated_sample_ecommerce 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
events_20210131 |
2021 年 1 月 31 日的 Google Analytics 4 事件資料經過模糊處理,模擬網站電子商務導入作業。 |
geo_openstreetmap
geo_openstreetmap 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
planet_features |
OpenStreetMap 全球地理特徵,包括特徵類型、標記和幾何圖形。 |
geo_us_boundaries
geo_us_boundaries 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
zip_codes |
美國郵遞區號界線,包括城市、郡、州 FIPS 代碼和地理幾何。 |
github_repos
github_repos 命名空間包含 GitHub 上公開、開放原始碼授權存放區的資料:
| 名稱 | 說明 |
|---|---|
commits |
GitHub 開放原始碼存放區的專屬 Git 提交,依存放區分組。 |
contents |
HEAD 分支中,大小在 1 MiB 以下的文字檔案內容。 |
languages |
GitHub API 回報的存放區程式語言。 |
licenses |
每個存放區的開放原始碼授權 SPDX 程式碼。 |
sample_commits |
commits 表格中的提交範例。 |
sample_contents |
從 contents 表格中隨機取樣 10% 的文字檔內容。 |
sample_files |
sample_repos 中列出的前 40 萬個存放區中,HEAD 檔案的取樣檔案中繼資料。 |
sample_repos |
星號數排名前 40 萬的 GitHub 存放區。 |
google_trends
google_trends 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
top_terms |
美國每日排名前 25 的搜尋字詞,以及分數、排名、時間和指定行銷區域 (DMA)。 |
imdb
imdb 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
title_basics |
IMDb 影片中繼資料,包括影片類型、主要和原始片名、發行年份、片長和類型。 |
title_ratings |
電影的 IMDb 使用者平均評分和票數。 |
iowa_liquor_sales
iowa_liquor_sales 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
sales |
自 2012 年起,愛荷華州零售商向個人銷售酒類產品的批發購買記錄。 |
ml_datasets
ml_datasets 命名空間包含機器學習基準測試表:
| 名稱 | 說明 |
|---|---|
census_adult_income |
用於分類工作的人口普查成人收入資料集,可預測收入是否超過每年 $50,000 美元。 |
penguins |
帕默群島企鵝測量結果,包括物種、島嶼、喙長、鰭足長度和體重。 |
ulb_fraud_detection |
自 2013 年 9 月起,歐洲持卡人匿名信用卡交易資料,用於詐欺偵測基準測試。 |
new_york_citibike
new_york_citibike 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
citibike_trips |
紐約市 Citi Bike 行程記錄,包括行程時間長度、時間戳記、站點位置和騎士人口統計資料。 |
new_york_taxi_trips
new_york_taxi_trips 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
taxi_zone_geom |
紐約市計程車暨禮車管理局 (TLC) 的計程車區域 ID、名稱、行政區和邊界幾何。 |
tlc_green_trips_2022 |
2022 年紐約市 TLC 綠色計程車的載客記錄。 |
tlc_yellow_trips_2022 |
2022 年紐約市 TLC 黃色計程車載客記錄。 |
noaa_gsod
noaa_gsod 命名空間包含美國國家海洋暨大氣總署 (NOAA) 的全球每日地表摘要 (GSOD) 天氣資料:
| 名稱 | 說明 |
|---|---|
gsod2023 |
2023 年每日全球地面天氣摘要觀測資料。 |
stations |
NOAA 氣象站中繼資料,包括氣象站 ID、名稱、國家/地區、州別和座標。 |
sec_quarterly_financials
sec_quarterly_financials 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
numbers |
從美國證券交易委員會 (SEC) 季度申報資料擷取的財務報表數字資料。 |
stackoverflow
stackoverflow 命名空間包含下列資料表:
| 名稱 | 說明 |
|---|---|
posts_answers |
Stack Overflow 回覆貼文,包括內文、分數、建立日期和作者詳細資料。 |
posts_questions |
Stack Overflow 問題貼文,包括標題、內文、標記、觀看次數和接受的答案 ID。 |
users |
Stack Overflow 使用者設定檔,包括顯示名稱、聲譽、建立日期和徽章數量。 |
tpc_ds_1g
tpc_ds_1g 命名空間包含 TPC-DS 1 GB 基準測試資料表:
| 名稱 | 說明 |
|---|---|
date_dim |
TPC-DS 日期維度表,可將日曆日期對應至會計週期、季度和節慶。 |
store_sales |
TPC-DS 商店銷售事實資料表,記錄零售商店交易。 |
wikipedia
wikipedia 命名空間包含維基媒體網頁瀏覽統計資料和維基資料實體:
| 名稱 | 說明 |
|---|---|
pageviews_2015 |
2015 年的每小時 Wikipedia 網頁瀏覽次數,依日期劃分。 |
pageviews_2016 |
2016 年的每小時 Wikipedia 網頁瀏覽次數,按日期劃分。 |
pageviews_2017 |
2017 年的每小時 Wikipedia 網頁瀏覽次數,按日期劃分。 |
pageviews_2018 |
2018 年的每小時維基百科網頁瀏覽次數,依日期劃分。 |
pageviews_2019 |
2019 年的每小時 Wikipedia 網頁瀏覽次數,依日期劃分。 |
pageviews_2020 |
2020 年的每小時 Wikipedia 網頁瀏覽次數,按日期劃分。 |
pageviews_2021 |
2021 年的維基百科網頁瀏覽次數 (以小時為單位),並依日期劃分。 |
pageviews_2022 |
2022 年的每小時維基百科網頁瀏覽次數,按日期劃分。 |
pageviews_2023 |
2023 年的每小時 Wikipedia 網頁瀏覽次數,依日期分區。 |
pageviews_2024 |
2024 年的維基百科網頁瀏覽次數 (以小時為單位),並依日期分區。 |
pageviews_2025 |
2025 年的每小時維基百科網頁瀏覽次數,依日期分區。 |
pageviews_2026 |
2026 年的每小時維基百科網頁瀏覽次數,依日期劃分。 |
table_activists |
有關社運人士的維基百科文章瀏覽次數。 |
table_actors |
演員相關條目的維基百科網頁瀏覽次數。 |
table_alumni |
校友相關維基百科文章的網頁瀏覽次數。 |
table_artists |
藝人相關條目的維基百科網頁瀏覽次數。 |
table_athlete |
運動員相關維基百科文章的網頁瀏覽次數。 |
table_bands |
音樂樂團相關條目的維基百科網頁瀏覽次數。 |
table_born |
依出生年份分類的文章維基百科網頁瀏覽次數。 |
table_businesspeople |
與商界人士相關的維基百科文章網頁瀏覽次數。 |
table_comedians |
有關喜劇演員的維基百科文章瀏覽次數。 |
table_composers |
作曲家相關條目的維基百科網頁瀏覽量。 |
table_inventors |
發明家相關維基百科文章的網頁瀏覽次數。 |
table_politicians |
政治人物相關條目的維基百科網頁瀏覽次數。 |
table_scientists |
科學家相關維基百科文章的網頁瀏覽次數。 |
table_singers |
歌手相關維基百科文章的網頁瀏覽次數。 |
table_writers |
作家相關條目的維基百科網頁瀏覽次數。 |
wikidata |
結構化維基資料知識庫實體,包括多語言標籤、說明、網站連結和聲明。 |
world_bank_health_population
world_bank_health_population 命名空間包含世界銀行健康、營養和人口統計資料:
| 名稱 | 說明 |
|---|---|
country_series_definitions |
定義和中繼資料,連結國家/地區代碼和指標系列代碼。 |
country_summary |
國家/地區中繼資料,包括簡短和完整名稱、ISO 代碼、貨幣單位和區域。 |
health_nutrition_population |
各國家/地區的年度健康、營養和人口指標值。 |
series_summary |
健康和人口指標的中繼資料,包括定義、測量單位和週期。 |
series_times |
依指標系列代碼和年份分類的時間序列中繼資料和說明。 |
world_bank_wdi
world_bank_wdi 命名空間包含世界銀行世界發展指標 (WDI) 資料:
| 名稱 | 說明 |
|---|---|
country_summary |
國家/地區中繼資料,包括簡短和完整名稱、ISO 代碼、貨幣單位和收入群組。 |
indicators_data |
各國家/地區和指標代碼的年度世界發展指標值。 |
series_summary |
世界發展指標系列的定義、主題和計量單位。 |
biglake-public-nyc-taxi-iceberg 目錄
biglake-public-nyc-taxi-iceberg 目錄 (gs://biglake-public-nyc-taxi-iceberg) 包含 public_data 命名空間中的下列資料表,格式為 Apache Iceberg:
| 名稱 | 說明 |
|---|---|
nyc_taxicab |
紐約市計程車暨禮車管理局 (TLC) 行程記錄資料。 |
nyc_taxicab_2021 |
2021 年紐約市計程車暨禮車管理局 (TLC) 載客記錄資料。 |