이 글은 GCP Dataflow 실습을 처음 수행하는 수강생을 위한 기록입니다.
Cloud Storage의 CSV 데이터를 어떻게 BigQuery까지 실시간처럼 연결하는지 흐름이 막히는 문제를 해결합니다.
이 글을 통해 Dataflow 템플릿 기반 스트리밍 파이프라인을 직접 구현할 수 있습니다.
핵심 질문
Cloud Storage의 CSV 데이터를 Dataflow로 BigQuery에 실시간 적재하려면 어떻게 해야 하는가?
실습 환경
- Cloud: GCP
- Region: us-central1
- Runtime: Cloud Shell
- DB: BigQuery (taxirides.realtime)
- Worker: 1 (Max 2)
- Machine: e2-medium
아키텍처
아래는 전체 데이터 흐름 구조입니다.

Cloud Storage → Dataflow → BigQuery → Looker Studio
■ 강사 설명
실습 흐름은 다음과 같습니다.
1. BigQuery 테이블 생성
2. Cloud Storage 파일 업로드
3. Dataflow 템플릿 실행
4. BigQuery 조회
코드 없이 템플릿으로 스트리밍 파이프라인을 구성하는 것이 핵심입니다.
■ 내가 이해한 핵심
Dataflow는 데이터 흐름 자동화 도구입니다.
처음부터 Beam 코드를 작성하기보다
Template → 구조 검증 → 확장
이 방식이 실무적으로 가장 안전합니다.
■ 내가 실제로 겪은 문제
Dataflow Job 실행 후 BigQuery 데이터가 보이지 않았습니다.
원인은 설정 문제가 아니라 스트리밍 초기화 지연이었습니다.
실습 단계
1. BigQuery 테이블 생성
bq mk taxirides
bq mk \
--time_partitioning_field timestamp \
--schema \
ride_id:string,point_idx:integer,latitude:float,longitude:float,\
timestamp:timestamp,meter_reading:float,meter_increment:float,ride_status:string,\
passenger_count:integer \
taxirides.realtime
2. Cloud Storage 파일 업로드
gcloud storage cp schema.json gs://my-bucket/tmp/schema.json
gcloud storage cp transform.js gs://my-bucket/tmp/transform.js
gcloud storage cp rt_taxidata.csv gs://my-bucket/tmp/rt_taxidata.csv
3. Dataflow 템플릿 설정
- Template: Cloud Storage Text to BigQuery (Stream)
- Input: CSV 파일
- Output: taxirides.realtime
- Schema: schema.json
- UDF: transform.js
4. 데이터 확인
SELECT * FROM taxirides.realtime LIMIT 10;
실습 증거
BigQuery 결과
ride_id: 12345
passenger_count: 2
meter_reading: 15.7
→ 데이터 정상 적재 확인
Dataflow 상태
- Status: Running
- Worker: 1
- 정상 처리
트러블슈팅
문제 증상:
데이터 조회 결과 없음
원인:
스트리밍 초기화 지연
해결:
3~5분 후 재조회
재발 방지:
스트리밍은 즉시 반영되지 않음
실무 핵심
- 입력: Cloud Storage
- 처리: Dataflow
- 저장: BigQuery
- 분석: SQL
이 구조를 이해하면 Pub/Sub, IoT 데이터까지 확장 가능
결론
핵심 원칙
데이터 파이프라인은 연결이 아니라 흐름 설계다
주의사항
- 스트리밍 지연 정상
- 스키마 오류 빈번
- 템플릿 먼저 검증
다음 단계
Pub/Sub 기반 실시간 파이프라인 확장
'서버 구축·실습' 카테고리의 다른 글
| GCP BigQuery 공개 데이터셋 실습: Public Dataset 조회부터 커스텀 테이블 생성까지 (0) | 2026.03.22 |
|---|---|
| Azure VM에서 OpenAI API를 안전하게 연결해 AI 챗봇을 완성하는 방법 (1) | 2026.03.02 |
| Azure 부하분산기 실습 — 새로고침할 때마다 서버1, 서버2가 번갈아 나오는 구조 직접 만들어봤다 (0) | 2026.02.23 |
| Azure 첫 실습 — AWS만 하던 사람이 느낀 충격적인 차이점 (0) | 2026.02.19 |
| 리눅스 FTP 서버 구축 실습 정리 – 사용자 권한 설계부터 보안 사고 대응 관점까지 (0) | 2026.01.26 |