本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Athena 記錄星火應用程式事
Athena 筆記本編輯器允許標準的 Jupyter、Spark 和 Python 記錄。您可以使df.show()
用顯示 PySpark DataFrame 內容或用print("Output")
於在儲存格輸出中顯示值。計算的 stdout
、stderr
和 results
輸出會寫入 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 Log4jDEBUG
、ERROR
、FATAL
、INFO
和 WARN
或 WARNING
。您可以使用記錄器上相應的具名函數來產生這些值。
注意
請勿重新繫結名稱 athena_user_logger
或 athena_shared_logger
。這樣做會使日誌對象無法在會話 CloudWatch 的其餘部分寫入。
下列程序說明如何將 Athena 筆記本事件記錄到 Amazon CloudWatch 日誌。
將 Athena 筆記本事件記錄到 Amazon CloudWatch 日誌
-
請遵循 開始使用阿帕奇星火在 Amazon Athena,以使用唯一名稱在 Athena 中建立已啟用 Spark 的工作群組。本教學課程使用工作群組名稱
athena-spark-example
。 -
請遵循 步驟 7:建立自己的筆記本 中的步驟,以建立筆記本並啟動新的工作階段。
-
在 Athena 筆記本編輯器的新筆記本儲存格中,輸入下列命令:
athena_user_logger.info("Hello world.")
-
執行儲存格。
-
執行下列其中一項動作,擷取目前工作階段 ID:
-
檢視儲存格輸出 (例如,
... session=72c24e73-2c24-8b22-14bd-443bdcd72de4
)。 -
在新的儲存格中,執行魔術命令
%session_id
。
-
-
儲存工作階段 ID。
-
用同樣的 AWS 帳戶 您正在使用來執行筆記本工作階段,請在的位置開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/
。 -
在 CloudWatch 主控台瀏覽窗格中,選擇 [記錄群組]。
-
在日誌群組清單中,選擇具有已啟用 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
-
選擇工作階段的日誌串流連結。
-
在 Log events (日誌事件) 頁面上,檢視 Message (訊息) 資料欄。
您執行之儲存格的日誌事件類似下列:
AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: Hello world.
-
返回 Athena 筆記本編輯器。
-
在新的儲存格中,輸入下列程式碼。程式碼會將變數記錄到 CloudWatch:
x = 6 athena_user_logger.warn(x)
-
執行儲存格。
-
返回相同記錄資料流的 CloudWatch 主控台 [記錄事件] 頁面。
-
日誌串流現在包含日誌事件項目,其中包含類似下列訊息:
AthenaForApacheSpark: 2022-01-01 12:00:00,000 WARN builtins: 6