경계 없는 레이크하우스 공개 데이터 세트

경계 없는 레이크하우스를 사용하면 Google Cloud 공개 데이터 세트 프로그램의 일부로 Apache Iceberg REST 카탈로그 엔드포인트를 통해 제공되는 읽기 전용 공개 데이터 세트를 쿼리할 수 있습니다. BigQuery, Managed Service for Apache Spark, Trino 또는 Apache Flink를 연결하여 이러한 테이블을 비공개 데이터와 결합하거나 스토리지 인프라를 관리하지 않고도 라이브 Apache Iceberg REST 카탈로그 엔드포인트에 대해 오픈소스 엔진 구성을 테스트할 수 있습니다.

이러한 데이터 세트의 스토리지 비용은 Google에서 부담하며 Lakehouse를 통해 데이터에 대한 공개 액세스를 제공합니다. 데이터에 대해 실행하는 쿼리에 대해서만 비용을 지불합니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $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 및 기타 호환되는 엔진에서 액세스할 수 있습니다. 온프레미스, 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

다음을 바꿉니다.

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)

다음을 바꿉니다.

쿼리 예

연결되면 데이터 세트에 대한 전체 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 네임스페이스에는 다음 테이블이 포함됩니다.

이름 설명
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) 운행 기록 데이터

다음 단계