Amazon Athena 上的 Apache Spark 入門 - Amazon Athena

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

Amazon Athena 上的 Apache Spark 入門

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

注意

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

步驟 1:在 Athena 中建立啟用 Spark 的工作群組

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

注意

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

若要在 Athena 中建立已啟用 Spark 的工作群組
  1. 在 開啟 Athena 主控台 https://console.aws.amazon.com/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. 對於計算結果設定,請從下列選項中選擇:

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

    • 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 (指派儲存貯體擁有者對查詢結果的完整控制)。

  10. (選用) 如果您想要加密查詢結果,請選擇加密查詢結果。

    • 針對加密類型,選擇下列其中一個選項:

      • SSE_S3 – 此選項使用伺服器端加密 (SSE) 搭配 Amazon S3-managed加密金鑰。

      • SSE_KMS – 此選項使用伺服器端加密 (SSE) AWS KMS搭配受管金鑰。

        針對選擇 AWS KMS 金鑰,選擇下列其中一個選項。

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

        • 選擇不同的 AWS KMS 金鑰 (進階) – 針對此選項,請執行下列其中一項:

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

          • 若要在 AWS KMS 主控台中建立金鑰,請選擇建立 AWS KMS 金鑰。您的執行角色必須具備使用所建立之金鑰的許可。在KMS主控台中建立金鑰後,返回 Athena 主控台中的建立工作群組頁面,然後使用選擇 AWS KMS 金鑰或輸入ARN搜尋方塊來選擇您剛建立的金鑰。

      重要

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

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

  11. 針對其他組態,選擇使用預設值。此選項可協助您開始使用啟用 Spark 的工作群組。當您使用預設值時,Athena 會在 Amazon S3 中為您建立IAM角色和計算結果位置。要建立IAM的角色名稱和 S3 儲存貯體位置會顯示在其他組態標題下方的方塊中。

    如果您不想使用預設值,請繼續 (選用) 指定您自己的工作群組組態區段中的步驟,手動設定您的工作群組。

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

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

(選用) 指定您自己的工作群組組態

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

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

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

    • 若要讓服務角色授權 Athena,請選擇下列其中一項:

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

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

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

      • 使用 AWS 擁有的金鑰加密 (預設) – AWS KMS 金鑰由 擁有和管理 AWS。使用此金鑰不會向您收取額外費用。

      • 使用您自己的 AWS KMS 金鑰加密 – 針對此選項,請執行下列其中一項:

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

        • 若要在 AWS KMS 主控台中建立金鑰,請選擇建立 AWS KMS 金鑰。您的執行角色必須具備使用所建立之金鑰的許可。在KMS主控台中建立金鑰後,返回 Athena 主控台中的建立工作群組頁面,然後使用選擇 AWS KMS 金鑰或輸入ARN搜尋方塊來選擇您剛建立的金鑰。

      重要

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

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

  2. (選用) 其他設定 – 展開此選項以啟用或停用工作群組的發佈 CloudWatch 指標選項。預設會選取此欄位。如需詳細資訊,請參閱使用 CloudWatch指標監視阿帕奇星火計算

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

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

步驟 2:開啟筆記本瀏覽器並切換工作群組

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

注意

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

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

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

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

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

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

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

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

步驟 3:執行範例筆記本

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

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

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

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

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

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

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

注意

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

步驟 4:編輯工作階段詳細資訊

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

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

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

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

      • 對於 DeltaHudiIceberg 資料表選項,對應的資料表格式所需的資料表屬性會自動在表格中的編輯和選項中的編輯JSON中提供給您。如需有關使用這些資料表格式的詳細資訊,請參閱 在 Athena 中使用非蜂巢表格格式進行 Spark

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

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

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

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

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

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

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

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

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

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

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

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

  4. 選擇 Save (儲存)。

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

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

    注意

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

步驟 5:檢視工作階段和計算詳細資訊

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

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

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

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

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

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

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

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

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

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

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

步驟 6:終止工作階段

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

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

注意

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

步驟 7:建立您自己的筆記本

在您建立已啟用 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中提供給您。如需有關使用這些資料表格式的詳細資訊,請參閱 在 Athena 中使用非蜂巢表格格式進行 Spark

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

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

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

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

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

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

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

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

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

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

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

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

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

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