경계 없는 레이크하우스를 사용하면 Google Cloud 공개 데이터 세트 프로그램의 일부로 Apache Iceberg REST 카탈로그 엔드포인트를 통해 제공되는 읽기 전용 공개 데이터 세트를 쿼리할 수 있습니다. BigQuery, Managed Service for Apache Spark, Trino 또는 Apache Flink를 연결하여 이러한 테이블을 비공개 데이터와 결합하거나 스토리지 인프라를 관리하지 않고도 라이브 Apache Iceberg REST 카탈로그 엔드포인트에 대해 오픈소스 엔진 구성을 테스트할 수 있습니다.
이러한 데이터 세트의 스토리지 비용은 Google에서 부담하며 Lakehouse를 통해 데이터에 대한 공개 액세스를 제공합니다. 데이터에 대해 실행하는 쿼리에 대해서만 비용을 지불합니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $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 및 기타 호환되는 엔진에서 액세스할 수 있습니다. 온프레미스, Managed Service for Apache Spark 또는 기타 클라우드 공급업체와 같은 표준 Spark 환경을 사용하여 공개 데이터 세트에 연결할 수 있습니다.
Apache Spark에 연결
Spark SQL 세션을 시작할 때 다음 구성 플래그를 사용합니다.
이러한 플래그는 공개 REST 엔드포인트를 가리키는 lakehouse-sample라는 카탈로그를 구성합니다.
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 액세스 권한이 부여됩니다.
Wikipedia 페이지 조회수 및 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)
NYC 택시 데이터 세트 쿼리
NYC 택시 데이터 세트는 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-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 |
2020년 미국 인구조사국 미국 지역사회 설문조사 (ACS) 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 애널리틱스 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 브랜치에 있는 1MiB 미만의 텍스트 파일의 고유한 파일 콘텐츠입니다. |
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 |
이동 시간, 타임스탬프, 정류장 위치, 라이더 인구통계를 포함한 뉴욕시 Citi Bike 이동 기록입니다. |
new_york_taxi_trips
new_york_taxi_trips 네임스페이스에는 다음 테이블이 포함됩니다.
| 이름 | 설명 |
|---|---|
taxi_zone_geom |
뉴욕시 택시 및 리무진 조합 (TLC) 택시 구역 ID, 이름, 자치구, 경계 도형입니다. |
tlc_green_trips_2022 |
2022년 NYC TLC 그린 택시 운행 기록입니다. |
tlc_yellow_trips_2022 |
2022년 NYC 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 |
제목, 본문 텍스트, 태그, 조회수, 채택된 답변 ID를 포함한 Stack Overflow 질문 게시물입니다. |
users |
표시 이름, 평판, 생성 날짜, 배지 수를 포함한 Stack Overflow 사용자 프로필 |
tpc_ds_1g
tpc_ds_1g 네임스페이스에는 TPC-DS 1GB 벤치마크 테이블이 포함됩니다.
| 이름 | 설명 |
|---|---|
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년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티션을 나눕니다. |
pageviews_2019 |
2019년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티션을 나눕니다. |
pageviews_2020 |
2020년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티션을 나눕니다. |
pageviews_2021 |
2021년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티션을 나눕니다. |
pageviews_2022 |
2022년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티셔닝됩니다. |
pageviews_2023 |
2023년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티셔닝됩니다. |
pageviews_2024 |
2024년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티셔닝됩니다. |
pageviews_2025 |
2025년의 시간별 Wikipedia 페이지 조회수이며 날짜별로 파티셔닝됩니다. |
pageviews_2026 |
2026년의 시간별 Wikipedia 페이지 조회수(날짜별로 파티셔닝됨) |
table_activists |
사회 운동가에 관한 기사의 Wikipedia 페이지 조회수 |
table_actors |
배우에 관한 기사의 Wikipedia 페이지 조회수입니다. |
table_alumni |
졸업생 관련 기사의 Wikipedia 페이지 조회수입니다. |
table_artists |
아티스트 관련 기사의 위키백과 페이지 조회수입니다. |
table_athlete |
운동선수에 관한 기사의 Wikipedia 페이지 조회수입니다. |
table_bands |
음악 밴드에 관한 위키백과 문서의 페이지 조회수입니다. |
table_born |
출생 연도별로 분류된 기사의 위키백과 페이지 조회수입니다. |
table_businesspeople |
기업인에 관한 위키백과 문서의 페이지 조회수입니다. |
table_comedians |
코미디언에 관한 기사의 Wikipedia 페이지 조회수입니다. |
table_composers |
작곡가에 관한 위키백과 문서의 페이지 조회수입니다. |
table_inventors |
발명가에 관한 위키백과 문서의 페이지 조회수입니다. |
table_politicians |
정치인 관련 기사의 위키백과 페이지 조회수입니다. |
table_scientists |
과학자에 관한 기사의 Wikipedia 페이지 조회수입니다. |
table_singers |
가수에 관한 기사의 Wikipedia 페이지 조회수입니다. |
table_writers |
작가에 관한 기사의 Wikipedia 페이지 조회수 |
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)에는 Apache Iceberg 형식의 public_data 네임스페이스에 다음 테이블이 포함되어 있습니다.
| 이름 | 설명 |
|---|---|
nyc_taxicab |
NYC Taxi and Limousine Commission (TLC) 운행 기록 데이터 |
nyc_taxicab_2021 |
2021년 뉴욕시 택시 및 리무진 조합 (TLC) 운행 기록 데이터 |
다음 단계
- Lakehouse에서 관리하는 Apache Iceberg 테이블 자세히 알아보기
- Lakehouse 런타임 카탈로그 Iceberg REST 카탈로그 자세히 알아보기