在 Athena 記錄星火應用程式事 - Amazon Athena

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

在 Athena 記錄星火應用程式事

Athena 筆記本編輯器允許標準的 Jupyter、Spark 和 Python 記錄。您可以使df.show()用顯示 PySpark DataFrame 內容或用print("Output")於在儲存格輸出中顯示值。計算的 stdoutstderrresults 輸出會寫入 Amazon S3 中的查詢結果儲存貯體位置。

日誌星火應用程序事件 Amazon CloudWatch

您的 Athena 會話也可以在您使用的帳戶 CloudWatch中將日誌寫入 Amazon

瞭解記錄串流和記錄群組

CloudWatch 將記錄活動組織到記錄串流和記錄群組中。

防護記錄串流 — CloudWatch 記錄資料流是共用相同來源的一系列記錄事件。記錄檔中的每個個別記錄來源都會組成個別的 CloudWatch 記錄資料流。

防護記錄群組 — 在 CloudWatch 記錄檔中,記錄群組是共用相同保留、監視和存取控制設定的一組記錄資料流。

可以屬於一個日誌群組的日誌串流數量並沒有限制。

在 Athena 中,當您第一次啟動筆記本工作階段時,Athena 會在中建立一個使用 CloudWatch 已啟用 Spark 之工作群組名稱的記錄群組,如下列範例所示。

/aws-athena/workgroup-name

此日誌群組會為工作階段中的每個執行器接收日誌串流,其中該日誌串流會產生至少一個日誌事件。執行器是筆記本工作階段可向 Athena 請求的最小運算單位。在中 CloudWatch,記錄資料流的名稱以工作階段 ID 和執行程式 ID 開頭。

如需有關 CloudWatch 日誌群組和日誌串流的詳細資訊,請參閱 Amazon CloudWatch Logs 使用者指南中的使用日誌群組和日誌串流

在 Athena 使用標準記錄器對象的 Spark

在 Athena for Spark 工作階段中,您可以使用下列兩個全域標準記錄器物件將日誌寫入 Amazon CloudWatch:

  • 使用者記錄器 — 僅將記錄檔傳送給。 CloudWatch 當您想要將 Spark 應用程式直接記錄到的資訊時,請使用此物件 CloudWatch,如下列範例所示。

    athena_user_logger.info("CloudWatch log line.")

    此範例會寫入記錄事件, CloudWatch 如下所示:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: CloudWatch log line.
  • athena_shared_logger — 將相同的日誌發送到和 CloudWatch AWS 用於支持目的。您可以使用此對象與共享日誌 AWS 服務團隊進行故障排除,如以下示例所示。

    athena_shared_logger.info("Customer debug line.") var = [...some variable holding customer data...] athena_shared_logger.info(var)

    此範例會將debug行和var變數值 CloudWatch 記錄到 Logs,並將每行的副本傳送至 AWS Support.

    注意

    為了您的隱私,您的計算代碼和結果不會與 AWS。 確保您的呼叫僅athena_shared_logger寫入您想要顯示的信息 AWS Support.

提供的記錄器會透過 Apache Log4j 寫入事件,並繼承此介面的日誌記錄層級。可能的日誌層級值為 DEBUGERRORFATALINFOWARNWARNING。您可以使用記錄器上相應的具名函數來產生這些值。

注意

請勿重新繫結名稱 athena_user_loggerathena_shared_logger。這樣做會使日誌對象無法在會話 CloudWatch 的其餘部分寫入。

下列程序說明如何將 Athena 筆記本事件記錄到 Amazon CloudWatch 日誌。

將 Athena 筆記本事件記錄到 Amazon CloudWatch 日誌
  1. 請遵循 開始使用阿帕奇星火在 Amazon Athena,以使用唯一名稱在 Athena 中建立已啟用 Spark 的工作群組。本教學課程使用工作群組名稱 athena-spark-example

  2. 請遵循 步驟 7:建立自己的筆記本 中的步驟,以建立筆記本並啟動新的工作階段。

  3. 在 Athena 筆記本編輯器的新筆記本儲存格中,輸入下列命令:

    athena_user_logger.info("Hello world.")
  4. 執行儲存格。

  5. 執行下列其中一項動作,擷取目前工作階段 ID:

    • 檢視儲存格輸出 (例如,... session=72c24e73-2c24-8b22-14bd-443bdcd72de4)。

    • 在新的儲存格中,執行魔術命令 %session_id

  6. 儲存工作階段 ID。

  7. 用同樣的 AWS 帳戶 您正在使用來執行筆記本工作階段,請在的位置開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/

  8. 在 CloudWatch 主控台瀏覽窗格中,選擇 [記錄群組]。

  9. 在日誌群組清單中,選擇具有已啟用 Spark 之 Athena 工作群組名稱的日誌群組,如下列範例所示。

    /aws-athena/athena-spark-example

    Log streams (日誌串流) 區段包含工作群組的一或多個日誌串流連結清單。每個日誌流名稱包含會話 ID,執行程序 ID 和唯一由正斜杠字符UUID分隔。

    例如,如果工作階段 ID 為 5ac22d11-9fd8-ded7-6542-0412133d3177 且執行器 ID 為 f8c22d11-9fd8-ab13-8aba-c4100bfba7e2,日誌串流的名稱會類似下列範例。

    5ac22d11-9fd8-ded7-6542-0412133d3177/f8c22d11-9fd8-ab13-8aba-c4100bfba7e2/f012d7cb-cefd-40b1-90b9-67358f003d0b
  10. 選擇工作階段的日誌串流連結。

  11. Log events (日誌事件) 頁面上,檢視 Message (訊息) 資料欄。

    您執行之儲存格的日誌事件類似下列:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: Hello world.
  12. 返回 Athena 筆記本編輯器。

  13. 在新的儲存格中,輸入下列程式碼。程式碼會將變數記錄到 CloudWatch:

    x = 6 athena_user_logger.warn(x)
  14. 執行儲存格。

  15. 返回相同記錄資料流的 CloudWatch 主控台 [記錄事件] 頁面。

  16. 日誌串流現在包含日誌事件項目,其中包含類似下列訊息:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 WARN builtins: 6