無邊界湖倉公開資料集

無邊界湖倉可讓您查詢透過 Apache Iceberg REST 目錄端點提供的唯讀公開資料集,這是 Google Cloud 公開資料集計畫的一部分。您可以連結 BigQuery、Managed Service for Apache Spark、Trino 或 Apache Flink,將這些資料表與私人資料合併,或針對實際運作的 Apache Iceberg REST 目錄端點測試開放原始碼引擎設定,不必管理儲存空間基礎架構。

Google 支付這些資料集的儲存費用,並透過 Lakehouse 提供資料的公開存取權。您只需為對資料執行的查詢付費。

事前準備

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $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, 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

連結 Apache Spark 前,請先備妥下列項目:

公開資料集位置

每個公開資料集都會儲存在特定位置,例如 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 相關文章的每月維基百科觀看次數:

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 目錄中提供紐約市計程車資料集,並以 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,並回溯查看資料集隨時間成長的情況。

詳情請參閱「使用 Lakehouse 查詢 Apache Iceberg 資料表」。

可用的資料集

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 Current Population Survey (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 以太坊區塊鏈交易記錄,包括寄件者和收件者地址、價值和 gas 指標。

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 HEAD 檔案的取樣檔案中繼資料,來自 sample_repos 中列出的前 400,000 個存放區。
sample_repos 星號數量前 400,000 名的 GitHub 存放區。

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 年每小時維基百科網頁瀏覽次數,依日期分區。
pageviews_2017 2017 年每小時維基百科網頁瀏覽次數,依日期分區。
pageviews_2018 2018 年每小時維基百科網頁瀏覽次數,依日期分區。
pageviews_2019 2019 年每小時維基百科網頁瀏覽次數,依日期分區。
pageviews_2020 2020 年每小時維基百科網頁瀏覽次數,依日期分區。
pageviews_2021 2021 年維基百科每小時網頁瀏覽次數,依日期分區。
pageviews_2022 2022 年每小時 Wikipedia 網頁瀏覽次數,依日期分區。
pageviews_2023 2023 年每小時維基百科網頁瀏覽次數,依日期分區。
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) 行程記錄資料。

後續步驟