Borderless Lakehouse 允许您查询通过 Apache Iceberg REST 目录端点提供的只读公共数据集,这些数据集是 Google Cloud 公共数据集计划的一部分。您可以连接 BigQuery、Managed Service for Apache Spark、Trino 或 Apache Flink,将这些表与您的私有数据合并,或针对实时 Apache Iceberg REST 目录端点测试开源引擎配置,而无需管理存储基础架构。
Google 会支付这些数据集的存储费用,并通过 Lakehouse 提供对数据的公开访问权限。您只需为对数据运行的查询付费。
准备工作
- 登录您的 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 Catalog 提供的,因此您可以从 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)
查询纽约市出租车数据集
NYC Taxi 数据集可在 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 |
当前人口调查 (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 |
sample_repos 中列出的前 400,000 个代码库中 HEAD 处文件的采样文件元数据。 |
sample_repos |
按星标数量排名前 400,000 的 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 |
纽约市花旗单车行程记录,包括行程时长、时间戳、站点位置和骑行者受众特征。 |
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 气象站元数据,包括气象站标识符、名称、国家/地区、州和坐标。 |
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 命名空间包含 Wikimedia 网页浏览量统计信息和 Wikidata 实体:
| 名称 | 说明 |
|---|---|
pageviews_2015 |
2015 年每小时维基百科网页浏览量,按日期分区。 |
pageviews_2016 |
2016 年每小时维基百科网页浏览量,按日期分区。 |
pageviews_2017 |
2017 年维基百科每小时网页浏览量统计信息,按日期分区。 |
pageviews_2018 |
2018 年每小时维基百科网页浏览量,按日期分区。 |
pageviews_2019 |
2019 年每小时维基百科网页浏览量,按日期分区。 |
pageviews_2020 |
2020 年每小时维基百科网页浏览量,按日期分区。 |
pageviews_2021 |
2021 年维基百科网页浏览量(按小时统计),按日期分区。 |
pageviews_2022 |
2022 年维基百科每小时网页浏览量,按日期分区。 |
pageviews_2023 |
2023 年维基百科每小时网页浏览量,按日期分区。 |
pageviews_2024 |
2024 年维基百科每小时网页浏览量统计,按日期分区。 |
pageviews_2025 |
2025 年维基百科每小时网页浏览量统计数据,按日期分区。 |
pageviews_2026 |
2026 年每小时维基百科网页浏览量统计信息,按日期分区。 |
table_activists |
有关活动家的文章的维基百科页面浏览量。 |
table_actors |
关于演员的文章的 Wikipedia 网页浏览量。 |
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 |
结构化 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) 行程记录数据。 |