Получение времени бездействия кластера в записной книжке Azure Databricks

avatar
Luke
9 августа 2021 в 06:35
158
1
0

Я новичок в Azure Databricks и использую его для проекта.

Как упоминалось здесь ​​в документации для Automatic termination это говорит

Вы также можете установить автоматическое завершение для кластера. Во время создания кластера вы можете указать inactivity period в минутах, после которых вы хотите завершить работу кластера. Если разница между запуском current time и last command в кластере превышает указанный период бездействия, Azure Databricks автоматически завершает работу этого кластера.

Существует ли обходной путь для получения периода бездействия в реальном времени (разница между текущим временем и последней командой, запущенной в кластере) кластера в блокнотах Azure Databricks через Cluster API или любой другой другой метод?

Источник

Ответы (1)

avatar
Luke
9 августа 2021 в 11:17
0
# Function to retrieve cluster inactivity time
from datetime import datetime
import time

def cluster_inactivity_time(log_file_path):
 
  # Open log4j-active.log and read last line
  with open(log_file_path, "r") as file:
    first_line = file.readline()
    for last_line in file:
        pass
      
  # Convert last lines' timestamp to milliseconds
  last_run_time = last_line[9:17]
  current_date = datetime.now().strftime('%Y-%m-%d')
  last_run_datetime = round(datetime.strptime(current_date + ' ' + last_run_time, "%Y-%m-%d %H:%M:%S").timestamp() * 1000)
  
  # Finding the difference between current time and last command run time
  current_time = round(time.time() * 1000)
  difference = current_time - last_run_datetime
  inactivity_time = datetime.fromtimestamp(difference / 1000.0)
  print(f'The Cluster has been Inactive for {inactivity_time.hour}:{inactivity_time.minute}:{inactivity_time.second}')


# Function Call
log_file_path = '/dbfs/cluster-logs/0809-101642-leap143/driver/log4j-active.log'
cluster_inactivity_time(log_file_path)

Вывод:

Кластер был неактивен в течение 0:0:35