DBFS S3桶的成本主要由API調用的數量驅動,其次由存儲成本驅動。您可以使用AWS CloudTrail日誌創建一個表,計算API調用的數量,從而計算API請求的確切成本。
- 獲取以下信息。您可能需要聯係AWS管理員來獲取。
- 涉及List、Put、Copy或Post的調用的API調用成本(示例腳本使用每千次調用的價格:0.005/1000)
- 涉及Head、Get或Select的API調用開銷(如下,0.0004/1000)
- Databricks控製平麵帳戶的帳戶ID(下麵是414351767826)
- 將CloudTrail日誌複製到S3桶中,使用以下Apache Spark代碼讀取日誌並創建表:
% python spark.read.json(“s3: / / dbc-root-cloudwatch /*/*/*/*/*/*/*"). createOrReplaceTempView(“f_cloudwatch”)
- 代替accountID和API調用成本到下麵的查詢。該查詢獲取在特定時間間隔內收集的CloudTrail結果,計算Databricks控製平麵帳戶進行的API調用的數量,並計算成本。
%sql select Records.userIdentity。accountId,記錄。eventName, count(*) as api_calls, (case當Records。例如“列表%”或“記錄”。eventName,例如“Put%”或“Records”。例如“複製%”或記錄。eventName像'Post%'然後0.005/1000當記錄。eventName像'Head%'或Records。例如“獲取%”或“記錄”。* count(*) as api_cost from (Select explosion (Records) as Records from f_cloudwatch where Records is not null)——where Records. useridentity . accountid = '414351767826' group by 1,2 order by 4 desc limit 10;
- 運行查詢生成一個表。結果表顯示了API調用的數量和這些調用的開銷。
額外的API成本通常是由於流作業的檢查點目錄。Databricks建議刪除舊的檢查點目錄,如果它們不再被引用。