簡體   English   中英

有沒有辦法從 AWS Glue 作業發布自定義指標?

[英]Is there a way to publish custom metrics from AWS Glue jobs?

我正在使用 AWS Glue 作業跨 S3 存儲桶移動和轉換數據,我想構建自定義累加器來監控我接收和發送的行數以及其他自定義指標。 監控這些指標的最佳方式是什么? 根據此文檔: https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html我可以跟蹤膠水作業的一般指標,但沒有似乎是通過 cloudwatch 發送自定義指標的好方法。

考慮在您的 AWS Glue 作業上啟用連續日志記錄 這將允許您通過進行自定義日志記錄。 雲觀察。 自定義日志記錄可以包括行數等信息。

進一步來說

  1. 為您的 Glue 作業啟用連續日志記錄
  2. 在 Glue Job 的開頭添加logger = glueContext.get_logger()
  3. 添加logger.info("Custom logging message that will be sent to CloudWatch")您要將信息記錄到 CloudWatch 的位置。 例如,如果我有一個名為df的數據框,我可以通過添加logger.info("Row count of df " + str(df.count()))將行數記錄到 CloudWatch

您的日志消息將位於 CloudWatch 日志組/aws-glue/jobs/logs-v2下的日志 stream 名為glue_run_id -driver

您還可以參考 AWS 文檔為 AWS Glue 作業啟用連續日志記錄的“使用自定義腳本記錄器記錄應用程序特定消息”部分,了解有關應用程序特定日志記錄的更多信息。

我做過很多類似的項目,每個微批次可以是:

  1. 一個文件或一堆文件
  2. 從 API 開始的數據時間間隔
  3. 來自數據庫的記錄分區
  4. ETC...

您的用例可以分為三個問題:

  1. 給定一堆輸入,你如何定義一個task_id
  2. 你想如何為你的任務定義metrics ,你需要為這個指標數據定義一個簡單的字典結構
  3. 找到一個后端數據存儲來存儲指標數據
  4. 找到查詢指標數據的方法

在某些業務用例中,您還需要存儲狀態信息以跟蹤每個輸入,它們是否成功? 失敗的? 進行中? 卡住? 並且您可能想要控制重試和並發控制(避免多個工作人員處理同一輸入)

DynamoDB 是此類用例的完美后端。 這是一個超級快,沒有操作,隨你付 go,自動縮放鍵值存儲。

有一個 Python 庫實現了這個模式https://github.com/MacHu-GWU/pynamodb_mate-project/blob/master/examples/patterns/status-tracker.ipynb

這是一個例子:

將膠水 ETL 作業的主要邏輯放在 function 中:

def glue_job() -> dict:
   ...
   return your_metrics

給定一個輸入,計算task id標識符,那么你只需要

tracker = Tracker.new(task_id)

# start the job, it will succeed
with tracker.start_job():
    # do some work
    your_metrics = glue_job()
    # save your metrics in dynamodb
    tracker.set_data(your_metrics)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM