반응형
작업 1. 환경 구성 작업 완료
먼저 Apache Spark용 서버리스 워크로드 실행을 지원하도록 몇 가지 환경 구성 작업을 수행하겠습니다.
- Cloud Shell에서 다음 명령어를 실행하여 비공개 IP 액세스를 사용 설정합니다.
gcloud compute networks subnets update default --region=REGION --enable-private-ip-google-access
- 다음 명령어를 사용하여 스테이징 위치 역할을 할 새 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_ID gs://PROJECT_ID
- 다음 명령어를 사용하여 BigQuery에서 테이블을 만들고 로드하는 동안 임시 위치 역할을 할 새 Cloud Storage 버킷을 만듭니다.
gsutil mb -p PROJECT_ID gs://PROJECT_ID-bqtemp
- 데이터를 저장할 BQ 데이터 세트를 만듭니다.
bq mk -d loadavro

작업 2. 실습 Asset 다운로드
다음으로 실습 완료에 필요한 애셋 몇 가지를 실습용으로 제공된 Compute Engine VM에 다운로드하겠습니다. 남은 실습 단계는 Compute Engine VM에서 수행합니다.
- 탐색 메뉴에서 Compute Engine을 클릭합니다. 여기에 프로비저닝된 Linux VM이 표시됩니다. lab-vm 인스턴스 옆에 있는 SSH 버튼을 클릭합니다.

- VM 터미널 프롬프트에서 Avro 파일을 다운로드합니다. 이 파일은 BigQuery에 저장할 수 있도록 처리됩니다.
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
- 그런 다음, Avro 파일을 앞서 만든 스테이징 Cloud Storage 버킷으로 이전합니다.
gcloud storage cp campaigns.avro gs://PROJECT_ID
- 서버리스 환경에 대해 실행할 Spark 코드가 포함되어 있는 보관 파일을 다운로드합니다.
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/dataproc-templates.zip

- 보관 파일을 압축 해제합니다.
unzip dataproc-templates.zip
- Python 디렉터리로 변경합니다.
cd dataproc-templates/python
작업 3. Spark 코드 구성 및 실행
다음으로 VM 인스턴스 터미널에 몇 가지 환경 변수를 설정하고, Spark 템플릿을 실행하여 BigQuery에 데이터를 로드하겠습니다.
- Apache Spark용 서버리스 환경에 대해 다음 환경 변수를 설정합니다.
export GCP_PROJECT=PROJECT_ID
export REGION=REGION
export GCS_STAGING_LOCATION=gs://PROJECT_ID
export JARS=gs://cloud-training/dataengineering/lab_assets/idegc/spark-bigquery_2.12-20221021-2134.jar
- 다음 코드를 실행해 Spark Cloud Storage to BigQuery 템플릿을 실행하여 Avro 파일을 BigQuery에 로드합니다.
./bin/start.sh \
-- --template=GCSTOBIGQUERY \
--gcs.bigquery.input.format="avro" \
--gcs.bigquery.input.location="gs://PROJECT_ID" \
--gcs.bigquery.input.inferschema="true" \
--gcs.bigquery.output.dataset="loadavro" \
--gcs.bigquery.output.table="campaigns" \
--gcs.bigquery.output.mode=overwrite\
--gcs.bigquery.temp.bucket.name="PROJECT_ID-bqtemp"
참고: 다음과 같은 경고는 무시해도 됩니다. FileStreamSink 경고: 메타데이터 디렉터리가 없다고 가정합니다. 경로에서 메타데이터 디렉터리를 찾는 중 오류가 발생했습니다. 소규모 테스트이므로 메타데이터 디렉터리가 필요하지 않습니다.참고: 일괄 작업에 실패했다는 오류 메시지가 표시되면 기다린 후 작업이 완료될 때까지 명령어를 다시 실행하세요.

작업 4. 데이터가 BigQuery에 로드되었는지 확인
Spark 템플릿을 성공적으로 실행했으니 이제 BigQuery에서 결과를 검토할 차례입니다.
- BigQuery에서 새 테이블의 데이터를 확인합니다.
bq query \
--use_legacy_sql=false \
'SELECT * FROM `loadavro.campaigns`;'
출력 예시:
+------------+--------+---------------------+--------+---------------------+----------+-----+
| created_at | period | campaign_name | amount | advertising_channel | bid_type | id |
+------------+--------+---------------------+--------+---------------------+----------+-----+
| 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 |
| 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 |
| 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 |
| 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 |
| 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 |
| 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 |
| 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 |
| 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 |
| 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 |
| 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 |
+------------+--------+---------------------+--------+---------------------+----------+-----+

반응형
'Tech. Insight > AI · Data Science' 카테고리의 다른 글
| [GCP] Dataform에서 SQL 워크플로 만들기 및 실행 (0) | 2026.06.21 |
|---|---|
| [GCP] Lakehouse: Qwik Start (0) | 2026.06.21 |
| [GCP] Datastream: BigQuery로 PostgreSQL 복제 (0) | 2026.06.21 |
| 마이크로소프트(MS)의 AI 코딩 시장 분석 및 전략 (1) | 2026.03.06 |
| [Claude Code] Windows PC에 클로드 코드 설치하기 (삽질 일지) (0) | 2026.03.05 |