使用 Dataproc Serverless for Spark 將資料載入 BigQuery
实验
45 分钟
universal_currency_alt
5 积分
show_chart
入门级
info
此实验可能会提供 AI 工具来支持您学习。
總覽
Dataproc Serverless 是全代管服務,可讓您更輕鬆處理開放原始碼資料,以及執行數據分析工作負載,完全不須管理基礎架構或手動調整工作負載。
Dataproc Serverless for Spark 提供最佳化的環境,可輕易將現有的 Spark 工作負載移至 Google Cloud。
在本實驗室中,您將在 Dataproc Serverless 環境執行批次工作負載。此工作負載將採用 Spark 範本處理 Avro 檔案,並建立和載入 BigQuery 資料表。
學習內容
- 設定環境
- 下載實驗室資產
- 設定並執行 Spark 程式碼
- 查看 BigQuery 中的資料
設定
點選「Start Lab」按鈕前的須知事項
注意:請詳閱以下操作說明。
研究室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。您會在實際雲端環境中完成 Qwiklabs 實作研究室活動,而非模擬或示範環境。為此,我們會提供新的暫時憑證,讓您在研究室活動期間登入及存取 Google Cloud。
需求條件
如要完成這個研究室活動,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 已充分預留完成研究室的時間。
注意:如果您擁有個人 Google Cloud 或專案,請勿用於本研究室。
注意:如果您使用的是 Pixelbook,請先開啟無痕式視窗再執行本研究室。
如何開始研究室及登入控制台
-
按一下「Start Lab」按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側面板會顯示必須在這個研究室中使用的暫時憑證。

-
複製使用者名稱,然後點選「Open Google Console」。接著,研究室會啟動相關資源並開啟另一個分頁,當中顯示「Choose an account」頁面。
注意事項:請在不同視窗並排開啟分頁。
-
點選「Choose an account」頁面中的「使用其他帳戶」,「Sign in」頁面隨即開啟。

-
貼上您在「連線詳細資訊」面板中複製的使用者名稱,然後複製並貼上密碼。
注意事項:請務必使用「連線詳細資訊」面板中的憑證,而非 Google Cloud Skills Boost 的憑證。另外,請勿在這個研究室中使用您自己的 Google Cloud 帳戶,以免產生費用。
- 按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Cloud 控制台稍後會在這個分頁中開啟。
注意事項:點選畫面左上方的導覽選單,即可查看 Google Cloud 產品與服務清單。
啟動 Google Cloud Shell
Google Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。
Google Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
在 Cloud 控制台的右上方找到工具列,然後按一下「開啟 Cloud Shell」按鈕。

-
按一下「繼續」。
佈建並連線至環境的作業需要一些時間才能完成。連線建立完成即代表已通過驗證,而且專案已設為您的「PROJECT_ID」。示例如下:

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵完成功能。
gcloud auth list
輸出內容:
Credentialed accounts:
- @.com (active)
輸出內容示例:
Credentialed accounts:
- google1623327_student@qwiklabs.net
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 bucket 做為測試環境位置:
gsutil mb -p {{{project_0.project_id |PROJECT_ID}}} gs://{{{project_0.project_id |PROJECT_ID}}}
- 使用下列指令,建立新的 Cloud Storage bucket,做為 BigQuery 建立和載入資料表的暫時位置:
gsutil mb -p {{{project_0.project_id |PROJECT_ID}}} gs://{{{project_0.project_id |PROJECT_ID}}}-bqtemp
- 建立 BigQuery 資料集來儲存資料。
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 bucket。
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}}
- 下載包含 Spark 程式碼的封存檔,此程式碼將在 Serverless 環境中執行。
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 Serverless 設定下列環境變數。
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 到 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"
請注意,您可以放心忽略所有下列警告:「WARN FileStreamSink: Assume no metadata directory. Error while looking for metadata directory in the path...」由於這是小型測試,不需要中繼資料目錄。
注意事項:如果出現批次工作失敗的錯誤訊息,請稍候並再次執行指令,直到工作成功。
設定並執行 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
恭喜!
您使用 Dataproc Serverless for Spark,將 Avro 檔案載入 BigQuery 資料表中,成功執行批次工作負載。
Copyright 2022 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。