開始在 Amazon Athena 上使用 Apache Spark - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始在 Amazon Athena 上使用 Apache Spark

若要開始在 Amazon Athena 上使用 Apache Spark,您必須先建立一個已啟用 Spark 的工作群組。切換到工作群組後,您可以建立筆記本或開啟現有筆記本。當您在 Athena 中開啟筆記本時,系統會自動啟動新的工作階段,並且您可以直接在 Athena 筆記本編輯器中進行使用。

注意

在嘗試建立筆記本之前,請確定您建立了已啟用 Spark 的工作群組。

在 Athena 中建立已啟用 Spark 的工作群組

您可以使用 Athena 中的工作群組將使用者、團隊、應用程式或工作負載分組,並追蹤成本。若要在 Amazon Athena 中使用 Apache Spark,您可以建立使用 Spark 引擎的 Amazon Athena 工作群組。

注意

已啟用 Apache Spark 的工作群組可以使用 Athena 筆記本編輯器,但無法使用 Athena 查詢編輯器。只有 Athena SQL 工作群組可以使用 Athena 查詢編輯器。

若要在 Athena 中建立已啟用 Spark 的工作群組
  1. 前往 https://console.aws.amazon.com/athena/ 開啟 Athena 主控台

  2. 如果未顯示主控台的導覽窗格,請選擇左側的展開選單。

    選擇展開選單。
  3. 在導覽窗格中,選擇 Workgroups (工作群組)。

  4. Workgroups (工作群組) 頁面中,請選擇 Create workgroup (建立工作群組)。

  5. Workgroup name (工作群組名稱) 中,輸入 Apache Spark 工作群組的名稱。

  6. (選用) 在 Description (說明) 中,輸入工作群組的說明。

  7. 對於 Analytics engine (分析引擎),選擇 Apache Spark

    注意

    建立工作群組後,便無法變更工作群組的分析引擎類型。例如,Athena 引擎第 3 版工作群組無法變更為 PySpark 引擎第 3 版工作群組。

  8. 為了符合本教學的目的,請選取 Turn on example notebook (開啟範例筆記本)。此選用功能會將名稱為名稱的範例筆記本新增example-notebook-random_string至您的工作群組,並新增筆記本用來建立、顯示和刪除帳戶中特定資料庫和表格的 AWS Glue相關權限,以及在 Amazon S3 中針對範例資料集的讀取許可。若要查看已新增許可,請選擇 View additional permissions details (檢視其他許可詳細資訊)。

    注意

    執行範例筆記本可能會產生一些額外費用。

  9. 對於 Additional configurations (其他設定),請執行下列動作:

    • 使用 Use defaults (使用預設值) 設定。此選項是預設值,可協助您開始使用已啟用 Spark 的工作群組。使用此選項,Athena 會在 Amazon S3 中為您建立 IAM 角色和計算結果位置。要建立的 IAM 角色名稱和 S3 儲存貯體位置會顯示在 Additional configurations (其他組態) 標題下方的方塊中。

    • 停用 Use defaults (使用預設值) 設定,然後繼續執行 指定您自己的工作群組組態 一節中的步驟,以手動設定您的工作群組。

  10. (選用) Tags (標籤) – 使用此選項可將標籤新增至您的工作群組。如需詳細資訊,請參閱 標記 Athena 資源

  11. 選擇建立工作群組。隨即會出現一則訊息,通知您已成功建立工作群組,並且工作群組會顯示在工作群組清單中。

指定您自己的工作群組組態

如果您要為筆記本指定您自己的 IAM 角色和計算結果位置,則請遵循本節中的步驟。如果您為 Additional configurations (其他組態) 選項選擇 Use defaults (使用預設值),則請跳過此章節並直接前往 開啟筆記本瀏覽器和切換工作群組

下列程序假設您已完成上一節中 To create a Spark enabled workgroup in Athena (若要在 Athena 中建立已啟用 Spark 的工作群組) 的步驟 1 到 9。

若要指定您自己的工作群組組態
  1. 如果您想要建立或使用您自己的 IAM 角色或設定筆記本加密,則請展開 IAM role configuration (IAM 角色組態)。

    • 對於 Service Role (服務角色),選擇下列其中一項作業:

      • Create a service role (建立服務角色) – 選擇此選項可讓 Athena 為您建立服務角色。若要查看角色授予的許可,請選擇 View permission details (檢視許可詳細資訊)。

      • Choose an existing service role (選擇現有服務角色) – 從下拉式選單中,選擇現有的角色。您選擇的角色必須包含第一個選項中的許可。如需有關已啟用筆記本之工作群組的許可的詳細資訊,請參閱 對已啟用 Spark 的工作群組進行疑難排解

    • 針對 Notebook and calculation code encryption key management (筆記本計算程式碼加密金鑰管理),請選擇下列其中一種選項:

      • 由 Amazon Athena 擁有- AWS KMS 密鑰由 Amazon Athena 擁有和管理。使用此金鑰不會向您收取額外費用。

      • A symmetric key stored in your account, owned and managed by you (儲存在您的帳戶中,且由您擁有和管理的對稱金鑰。) – 對於此選項,請執行下列其中一項動作:

        • 若要使用現有的金鑰,請使用搜尋方塊選擇 AWS KMS 或輸入金鑰 ARN。

        • 若要在 AWS KMS 主控台中建立金鑰,請選擇 [建立 AWS KMS 金鑰]。您的執行角色必須具備使用所建立之金鑰的許可。

      重要

      當您變更工作群組的 AWS KMS key 時,更新前的受管筆記本仍會參考舊的 KMS 金鑰。更新後的受管筆記本使用新的 KMS 金鑰。若要更新舊筆記本以參考新的 KMS 金鑰,請將其匯出並匯入每個舊筆記本。如果您在將舊的筆記本參考更新至新的 KMS 金鑰之前刪除舊的 KMS 金鑰,則舊的筆記本將無法再解密且無法復原。

      此行為也適用於別名的更新,別名是 KMS 金鑰的易用名稱。當您更新 KMS 金鑰別名以指向新的 KMS 金鑰時,別名更新前的受管筆記本仍會參考舊的 KMS 金鑰,而別名更新後的受管筆記本則會使用新的 KMS 金鑰。更新 KMS 金鑰或別名之前,請考慮這幾點。

  2. 如果您要指定您自己的計算結果設定,則請展開 Calculation result settings (計算結果設定),然後從下列選項中選擇。

    • Create a new S3 bucket (建立新的 S3 儲存貯體) – 此選項會在您的帳戶中為您的計算結果建立 Amazon S3 儲存貯體。儲存貯體名稱具有格式 account_id-region-athena-results-bucket-alphanumeric_id,並使用 ACL 已停用、公有存取已封鎖、版本控制已停用以及儲存貯體擁有者強制執行的設定。

    • Choose an existing S3 location (選擇現有的 S3 位置) – 對於此選項,請執行下列動作:

      • 在搜尋方塊中輸入現有位置的 S3 路徑,或選擇 Browse S3 (瀏覽 S3) 從清單中選擇儲存貯體。

        注意

        當您在 Amazon S3 中選取現有位置時,請不要在該位置附加正斜線 (/)。這麼做會導致計算詳細資訊頁面上的計算結果位置的連結指向不正確的目錄。如果發生此問題,則請編輯工作群組的結果位置,以移除尾隨正斜線。

      • (選用) 選擇 View (檢視),以開啟 Amazon S3 主控台的 Buckets (儲存貯體) 頁面,您可以在其中檢視您選擇之現有儲存貯體的詳細資訊。

      • (選擇性) 針對「預期值區擁有者」,輸入您希望成為查詢結果輸出位置值區擁有者的 AWS 帳戶 ID。建議您盡可能選擇此選項作為新增的安全措施。如果儲存貯體擁有者的帳戶 ID 與您指定的 ID 不相符,則嘗試輸出到儲存貯體的動作會失敗。如需詳細資訊,請參閱 Amazon S3 使用者指南中的使用儲存貯體擁有者條件驗證儲存貯體擁有權

      • (選用) 如果您的計算結果位置係由另一個帳戶所擁有且您想要授予其他帳戶對查詢結果的完整控制,則選取 Assign bucket owner full control over query results (指派儲存貯體擁有者對查詢結果的完整控制)。

  3. (選用) 選取 Encrypt calculation results (加密計算結果),然後選擇以下其中一項:

    • SSE_S3 – 這是一個 S3 受管伺服器端加密金鑰。

    • SSE_KMS – 您提供的金鑰。對於 「選擇 AWS KMS 金鑰」,您可以選擇下列其中一項:

      • 使用 AWS 擁有的金鑰 — 使用為您 AWS 擁有和管理的金鑰。

      • 選擇不同的 AWS KMS 金鑰 (進階) — 選擇或建立金鑰。

        • 若要使用現有的金鑰,請使用搜尋方塊選擇 AWS KMS 或輸入金鑰 ARN。

        • 若要在 KMS 主控台中建立金鑰,請選擇 [建立金 AWS KMS 鑰]。在 KMS 主控台中完成金鑰建立後,請返回 Athena 主控台中的 [建立工作群組] 頁面,然後使用 [選擇金 AWS KMS 鑰] 或輸入 ARN 搜尋方塊,選擇剛才建立的金鑰。

  4. (選擇性) 其他設定 — 展開此選項以啟用或停用工作群組的「發佈 CloudWatch 量度」選項。預設會選取此欄位。如需詳細資訊,請參閱 使用 CloudWatch 指標監控 Apache Spark 計算

  5. (選用) Tags (標籤) – 使用此選項可將標籤新增至您的工作群組。如需詳細資訊,請參閱 標記 Athena 資源

  6. 選擇建立工作群組。隨即會出現一則訊息,通知您已成功建立工作群組,並且工作群組會顯示在工作群組清單中。

開啟筆記本瀏覽器和切換工作群組

您必須切換至工作群組,才能使用您剛建立的已啟用 Spark 的工作群組。若要切換已啟用 Spark 的工作群組,您可以使用筆記本瀏覽器或筆記本編輯器中的 Workgroup (工作群組) 選項。

注意

開始之前,檢查您的瀏覽器是否未封鎖第三方 Cookie。任何因預設或使用者啟用設定而封鎖第三方 Cookie 的瀏覽器,將使筆記本無法啟動。如需管理 Cookie 的詳細資訊,請參閱:

若要開啟筆記本瀏覽器和切換工作群組
  1. 在導覽窗格中,選擇 Notebook explorer (筆記本瀏覽器)。

  2. 使用主控台右上角的 Workgroup (工作群組) 選項,以選擇您建立之已啟用 Spark 的工作群組。範例筆記本會顯示在筆記本清單中。

    您可用下列方式使用筆記本瀏覽器:

    • 選擇筆記本的連結名稱,以在新的工作階段中開啟筆記本。

    • 若要重新命名、刪除或匯出筆記本,請使用 Actions (動作) 選單。

    • 若要匯入筆記本檔案,請選擇 Import file (匯入檔案)。

    • 若要建立筆記本,選擇 Create notebook (建立筆記本)。

執行範例筆記本

範例筆記本會查詢公開提供之紐約計程車行程資料集中的資料。筆記本有示例顯示如何使用星火 DataFrames,星火 SQL 和 AWS Glue Data Catalog.

若要執行範例筆記本
  1. 在筆記本瀏覽器中,選擇範例筆記本的連結名稱。

    這樣一來,會使用預設參數啟動筆記本工作階段,並在筆記本編輯器中開啟筆記本。隨即會出現一則訊息,通知您已使用預設參數 (最多 20 個 DPU) 啟動新的 Apache Spark 工作階段。

  2. 若要依序執行儲存格並觀察結果,請針對筆記本中的每個儲存格選擇 Run (執行) 按鈕一次。

    • 向下滾動,以查看結果並將新儲存格帶入視圖中。

    • 對於包含計算的儲存格,進度列會顯示已完成的百分比、經過時間和剩餘時間。

    • 範例筆記本會在您的帳戶中建立範例資料庫和資料表。最後一個儲存格會移除這些作為清理步驟。

注意

如果您變更範例筆記本中的資料夾、資料表或資料庫名稱,則請確定這些變更已在您使用的 IAM 角色中顯現。否則,筆記本可能由於許可不足而無法執行。

編輯工作階段詳細資訊

啟動筆記本工作階段之後,您可以編輯工作階段詳細資訊,例如資料表格式、加密、工作階段閒置逾時,以及您要使用之資料處理單位 (DPU) 的最大並行數目。DPU 是相對的處理能力,包含 4 個 vCPU 的運算容量和 16 GB 的記憶體。

若要編輯工作階段詳細資訊
  1. 在筆記本編輯器中,從右上角的 Session (工作階段) 選單中,選擇 Edit session (編輯工作階段)。

  2. 編輯工作階段詳細資訊對話方塊的 Spark properties 區段中,為下列選項選擇或輸入值:

    • 其他資料表格式 — 選擇 Linux Foundation Delta LakeApache HudiApache Iceberg 或自訂

      • 針對 DeltaHudiIceberg 資料表選項,會在在資料表中編輯在 JSON 中編輯選項中,自動為您提供相應資料表的必要資料表屬性。如需有關使用這些資料表格式的詳細資訊,請參閱 使用 Amazon Athena for Apache Spark 中的非 Hive 資料表格式

      • 若要新增或移除自訂或其他資料表類型的資料表屬性,請使用在資料表中編輯在 JSON 中編輯 選項。

      • 針對在資料表中編輯選項,請選擇新增屬性以新增屬性,或選擇移除以移除屬性。若要輸入屬性名稱及其價值,請使用金鑰方塊。

      • 針對在 JSON 中編輯選項,請使用 JSON 文字編輯器直接編輯組態。

        • 若要將 JSON 文字複製到剪貼簿,請選擇複製

        • 若要從 JSON 編輯器移除所有文字,請選擇清除

        • 若要設定換行或選擇 JSON 編輯器的顏色主題,選擇設定 (齒輪) 圖示。

    • 開啟 Spark 加密 - – 選取此選項可加密寫入磁碟並透過 Spark 網路節點傳送的資料。如需詳細資訊,請參閱 啟用 Apache Spark 加密

  3. 工作階段參數區段中,為下列選項選擇或輸入值:

    • Session idle timeout (工作階段閒置逾時) - 選擇或輸入介於 1 到 480 分鐘之間的值。預設值為 20。

    • Coordinator size (協調器大小) - 協調器是一種特殊執行器,可用於在筆記本工作階段中協調處理工作並管理其他執行器。目前,1 個 DPU 是預設值,也是唯一可能的值。

    • Executor size (執行器大小) - 執行器是筆記本工作階段可向 Athena 請求的最小運算單位。目前,1 個 DPU 是預設值,也是唯一可能的值。

    • Max concurrent value (最大並行值) - 可同時執行的 DPU 數量上限。預設值為 20,最小值為 3,最大值為 60。增加此值並不會自動配置其他資源,但是當運算負載需要且資源可用時,Athena 將會嘗試配置指定的最大數量。

  4. 選擇儲存

  5. 出現 Confirm edit (確認編輯) 提示時,選擇 Confirm (確認)。

    Athena 會儲存您的筆記本,並使用您指定之參數啟動新的工作階段。筆記本編輯器中的橫幅會通知您已使用已修改之參數啟動新的工作階段。

    注意

    Athena 會記住您筆記本的工作階段設定。如果您編輯工作階段的參數,然後終止工作階段,則 Athena 會使用您為下次啟動筆記本工作階段所設定的工作階段參數。

檢視工作階段和計算詳細資訊

執行筆記本後,您可以檢視工作階段和計算詳細資訊。

若要檢視工作階段和計算詳細資訊
  1. 從右上角的 Session (工作階段) 選單中,選擇 View details (檢視詳細資訊)。

    • Current session (目前工作階段) 會顯示目前工作階段的相關資訊,包括工作階段 ID、建立時間、狀態和工作群組。

    • History (歷史記錄) 標籤會列出先前工作階段的工作階段 ID。若要檢視先前工作階段的詳細資訊,請選擇 History (歷史記錄) 標籤,然後在清單中選擇工作階段 ID。

    • Calculations (計算) 區段會顯示工作階段中執行的計算清單。

  2. 若要檢視計算的詳細資訊,請選擇計算 ID。

  3. Calculation details (計算詳細資訊) 頁面上,您可以執行下列操作:

    • 若要檢視計算的程式碼,請參閱 Code (程式碼) 區段。

    • 若要查看計算的結果,請選擇 Results (結果) 標籤。

    • 若要以文字格式下載您看到的結果,請選擇 Download results (下載結果)。

    • 若要在 Amazon S3 中檢視有關計算結果的資訊,請選擇 View in S3 (在 S3 中檢視)。

終止工作階段

若要結束筆記本工作階段
  1. 在筆記本編輯器中,從右上角的 Session (工作階段) 選單中,選擇 Terminate (終止)。

  2. 出現 Confirm session termination (確認工作階段終止) 提示時,選擇 Confirm (確認)。隨即便會儲存您的筆記本,並返回筆記本編輯器。

注意

在筆記本編輯器中關閉筆記本標籤本身並不會終止作用中筆記本的工作階段。如果您要確認工作階段已終止,則請使用 Session (工作階段)、Terminate (終止) 選項。

建立您自己的筆記本

在您建立已啟用 Spark 的 Athena 工作群組後,您可建立自己的筆記本。

若要建立筆記本
  1. 如果未顯示主控台的導覽窗格,請選擇左側的展開選單。

  2. 在 Athena 主控台導覽窗格中,選擇 Notebook explorer (筆記本瀏覽器) 或 Notebook editor (筆記本編輯器)。

  3. 執行以下任意一項:

    • Notebook explorer (筆記本瀏覽器) 中,選擇 Create notebook (建立筆記本)。

    • Notebook editor (筆記本瀏覽器) 中,選擇 Create notebook (建立筆記本),或選擇加號圖示 (+) 以新增筆記本。

  4. Create notebook (建立筆記本) 對話方塊中,針對 Notebook name (筆記本名稱),輸入名稱。

  5. (選用) 展開 Spark 屬性,然後為下列選項選擇或輸入值:

    • 其他資料表格式 — 選擇 Linux Foundation Delta LakeApache HudiApache Iceberg 或自訂

      • 針對 DeltaHudiIceberg 資料表選項,會在在資料表中編輯在 JSON 中編輯選項中,自動為您提供相應資料表的必要資料表屬性。如需有關使用這些資料表格式的詳細資訊,請參閱 使用 Amazon Athena for Apache Spark 中的非 Hive 資料表格式

      • 若要新增或移除自訂或其他資料表類型的資料表屬性,請使用在資料表中編輯在 JSON 中編輯 選項。

      • 針對在資料表中編輯選項,請選擇新增屬性以新增屬性,或選擇移除以移除屬性。若要輸入屬性名稱及其價值,請使用金鑰方塊。

      • 針對在 JSON 中編輯選項,請使用 JSON 文字編輯器直接編輯組態。

        • 若要將 JSON 文字複製到剪貼簿,請選擇複製

        • 若要從 JSON 編輯器移除所有文字,請選擇清除

        • 若要設定換行或選擇 JSON 編輯器的顏色主題,選擇設定 (齒輪) 圖示。

    • 開啟 Spark 加密 - – 選取此選項可加密寫入磁碟並透過 Spark 網路節點傳送的資料。如需詳細資訊,請參閱 啟用 Apache Spark 加密

  6. (選用) 展開 Session parameters (工作階段參數),然後為下列選項選擇或輸入值:

    • Session idle timeout (工作階段閒置逾時) - 選擇或輸入介於 1 到 480 分鐘之間的值。預設值為 20。

    • Coordinator size (協調器大小) - 協調器是一種特殊執行器,可用於在筆記本工作階段中協調處理工作並管理其他執行器。目前,1 個 DPU 是預設值,也是唯一可能的值。DPU (資料處理單位) 是相對的處理能力,包含 4 個 vCPU 的運算容量和 16 GB 的記憶體。

    • Executor size (執行器大小) - 執行器是筆記本工作階段可向 Athena 請求的最小運算單位。目前,1 個 DPU 是預設值,也是唯一可能的值。

    • Max concurrent value (最大並行值) - 可同時執行的 DPU 數量上限。預設值為 20,最大值為 60。增加此值並不會自動配置其他資源,但是當運算負載需要且資源可用時,Athena 將會嘗試配置指定的最大數量。

  7. 選擇建立。隨即會在筆記本編輯器之新工作階段中開啟您的筆記本。

開啟先前建立的筆記本

若要開啟先前建立的筆記本
  1. 如果未顯示主控台的導覽窗格,請選擇左側的展開選單。

  2. 在 Athena 主控台導覽窗格中,選擇 Notebook editor (筆記本編輯器) 或 Notebook explorer (筆記本瀏覽器)。

  3. 執行以下任意一項:

    • Notebook editor (筆記本編輯器) 中,選擇 Recent notebooks (最近的筆記本) 或 Saved notebooks (儲存的筆記本) 清單中的筆記本。隨即會在新的工作階段中開啟筆記本。

    • Notebook explorer (筆記本瀏覽器) 中,選擇清單中的筆記本的名稱。隨即會在新的工作階段中開啟筆記本。

如需有關管理筆記本檔案的詳細資訊,請參閱 管理筆記本檔案