본문 바로가기
DB2026년 5월 30일3분 읽기

BigQuery DataFrames — Python ML 워크플로 Snowpark 대안

YS
김영삼
조회 112
BigQuery DataFrames — Python ML 워크플로 Snowpark 대안

핵심 요약

BigQuery DataFrames(bigframes 2.0) 12주 production 사용. pandas API로 BQ 테이블 직접 조작, 데이터 로컬 다운로드 없이 ML 학습. ETL 코드 -64%, 학습 데이터 이동 시간 0.

1. 사용 — pandas 그대로

import bigframes.pandas as bpd

df = bpd.read_gbq('project.dataset.orders')
# pandas 그대로 — 실제로는 BQ SQL로 변환되어 실행
df_us = df[df['country'] == 'US']
agg = df_us.groupby('product_id')['amount'].sum().sort_values(ascending=False)
print(agg.head(10).to_pandas())  # 결과만 로컬로

2. ML — BQ ML과 통합

from bigframes.ml.linear_model import LinearRegression
model = LinearRegression()
model.fit(df[['feat1', 'feat2']], df['target'])
preds = model.predict(test_df)
# 학습은 BQ 안에서 — 데이터 이동 0

3. 실측 — 12B row 데이터셋

방식소요 시간비용
pandas 로컬(GCS 다운로드)42분$28
Spark on Dataproc18분$12
bigframes8분$4.2

4. Snowpark 대비

Snowpark는 Snowflake 사용자 친화. bigframes는 BigQuery 사용자에게 동일. 둘 다 SQL 자동 생성. 데이터 거주성·기존 인프라가 결정 요소.

5. 함정

  • pandas API 호환 — 80%, 일부 메서드 미지원(applymap, eval). NotImplementedError 발생 시 SQL 직접 작성
  • BQ slot 사용량 — 큰 join 시 slot 폭증, on-demand vs reservation 사전 검토
  • 로컬 .to_pandas() — 큰 데이터 로컬 전송 시 OOM, head/sample 후 .to_pandas()
  • 순서 보장 — pandas는 index 보장, bigframes는 BigQuery 분산 실행이라 order by 명시 필요

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록