Spark용 Dataproc 서버리스를 사용하여 BigQuery 로드
실습
45분
universal_currency_alt
크레딧 5개
show_chart
입문
info
이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
개요
Dataproc 서버리스는 인프라를 관리하거나 워크로드를 수동으로 조정할 필요 없이 오픈소스 데이터 처리 및 분석 워크로드를 더 수월하게 실행하도록 해주는 완전 관리형 서비스입니다.
Spark용 Dataproc 서버리스는 기존 Spark 워크로드를 Google Cloud로 쉽게 이전할 수 있도록 설계된 최적화된 환경을 제공합니다.
이 실습에서는 Dataproc 서버리스 환경에서 일괄 워크로드를 실행해 봅니다. 이 워크로드는 Spark 템플릿을 통해 Avro 파일을 처리하여 BigQuery 테이블을 생성 및 로드합니다.
실습할 내용
- 환경 구성
- 실습 애셋 다운로드
- Spark 코드 구성 및 실행
- BigQuery에서 데이터 보기
설정
실습 시작 버튼을 클릭하기 전에
다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머에는 Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지 표시됩니다.
Qwiklabs 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud Platform에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
준비할 사항
이 실습을 완료하려면 다음을 준비해야 합니다.
- 표준 인터넷 브라우저(Chrome 브라우저 권장)
- 실습을 완료할 시간
참고: 이미 개인용 GCP 계정이나 프로젝트가 있어도 이 실습에서는 사용하지 마세요.
실습을 시작하고 콘솔에 로그인하는 방법
-
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다.
왼쪽에 있는 패널에서 이 실습에 사용해야 하는 임시 사용자 인증 정보를 확인할 수 있습니다.

-
사용자 이름을 복사한 다음 Google 콘솔 열기를 클릭합니다.
실습에서 리소스가 실행되며 계정 선택 페이지를 표시하는 다른 탭이 열립니다.
참고: 두 개의 탭을 각각 별도의 창으로 나란히 여세요.
-
계정 선택 페이지에서 다른 계정 사용을 클릭합니다. 로그인 페이지가 열립니다.

-
연결 세부정보 패널에서 복사한 사용자 이름을 붙여넣습니다. 그런 다음 비밀번호를 복사하여 붙여넣습니다.
참고: 연결 세부정보 패널에 표시된 사용자 인증 정보를 사용해야 합니다. Google Cloud Skills Boost 사용자 인증 정보를 사용하지 마세요. 개인용 Google Cloud 계정이 있어도 이 실습에서 사용하지 마세요(요금 청구 방지).
- 이후에 표시되는 페이지를 클릭하여 넘깁니다.
- 이용약관에 동의합니다.
- 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
- 무료 평가판을 신청하지 않습니다.
잠시 후 Cloud 콘솔이 이 탭에서 열립니다.
참고: 왼쪽 상단에 있는 탐색 메뉴를 클릭하면 Google Cloud 제품 및 서비스 목록이 있는 메뉴를 볼 수 있습니다.
Google Cloud Shell 활성화하기
Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.
Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
-
Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.

-
계속을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
- 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
gcloud auth list
출력:
Credentialed accounts:
- @.com (active)
출력 예시:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
gcloud config list project
출력:
[core]
project =
출력 예시:
[core]
project = qwiklabs-gcp-44776a13dea667a6
참고:
gcloud 전체 문서는 gcloud CLI 개요 가이드를 참조하세요.
작업 1. 환경 구성 작업 완료
먼저 Dataproc Serverless 워크로드 실행을 지원하도록 몇 가지 환경 구성 작업을 수행하겠습니다.
- Cloud Shell에서 다음 명령어를 실행하여 비공개 IP 액세스를 사용 설정합니다.
gcloud compute networks subnets update default --region={{{project_0.default_region |REGION}}} --enable-private-ip-google-access
- 다음 명령어를 사용하여 스테이징 위치 역할을 할 새 Cloud Storage 버킷을 만듭니다.
gsutil mb -p {{{project_0.project_id |PROJECT_ID}}} gs://{{{project_0.project_id |PROJECT_ID}}}
- 다음 명령어를 사용해 BigQuery에서 테이블을 만들고 로드하는 동안 임시 위치 역할을 할 새 Cloud Storage 버킷을 만듭니다.
gsutil mb -p {{{project_0.project_id |PROJECT_ID}}} gs://{{{project_0.project_id |PROJECT_ID}}}-bqtemp
- 데이터를 저장할 BQ 데이터 세트를 만듭니다.
bq mk -d loadavro
환경 구성 작업 완료
작업 2. 실습 애셋 다운로드
다음으로 실습 완료에 필요한 애셋 몇 가지를 실습용으로 제공된 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_0.project_id |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에 데이터를 로드하겠습니다.
- Dataproc 서버리스 환경에 대해 다음 환경 변수를 설정합니다.
export GCP_PROJECT={{{project_0.project_id |PROJECT_ID}}}
export REGION={{{project_0.default_region |REGION}}}
export GCS_STAGING_LOCATION=gs://{{{project_0.project_id |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_0.project_id |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_0.project_id |PROJECT_ID}}}-bqtemp"
참고: 다음과 같은 경고는 무시해도 됩니다. FileStreamSink 경고: 메타데이터 디렉터리가 없다고 가정합니다. 경로에서 메타데이터 디렉터리를 찾는 중 오류가 발생했습니다. 소규모 테스트이므로 메타데이터 디렉터리가 필요하지 않습니다.
참고: 일괄 작업에 실패했다는 오류 메시지가 표시되면 기다린 후 작업이 완료될 때까지 명령어를 다시 실행하세요.
Spark 코드 구성 및 실행
작업 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 |
+------------+--------+---------------------+--------+---------------------+----------+-----+
데이터가 BigQuery에 로드되었는지 확인
수고하셨습니다
Spark용 Dataproc 서버리스를 사용하여 일괄 워크로드를 성공적으로 실행하고 Avro 파일을 BigQuery 테이블에 로드했습니다.
Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.