Я использую Airflow для управления рабочими процессами для своих аналитических работ.Чтобы определить политику повторных попыток (модуль Python), я хочу построить логику.
ТОЧКА ДЛЯ РАССМОТРЕНИЯ: -
- С увеличением данных длительность задания постепенно увеличивается.Возможно, в один прекрасный день появилось больше данных, которые привели к резкому скачку продолжительности работы;в противном случае ожидается, что рост будет постепенным.
- И иногда рабочие места застревают из-за различных проблем и часто требуют прекращения работы с последующим перезапуском.
Итак, я пытаюсь создать логику, которая автоматически решит,
- прекратить работу
- Завершить и перезапустить
- Завершите работу и пометьте как сбой, чтобы последующие задания не запускались.
- Не предпринимайте никаких действий и сообщайте DevOps об этой проблеме (Действие вручную)
Итак, я просто хочустатистически знать, каким будет эффективный способ достижения вышеуказанных результатов.
Давайте рассмотрим 2 задания X и Y.
Информация о заданиях -
*FOR JOB X - *
----------------
datetime Job Name Job Duration(in mins)
1/25/2019 X 10
1/26/2019 X 11
1/27/2019 X 10
1/28/2019 X 9
1/29/2019 X 15
1/30/2019 X 20
1/31/2019 X 18
2/1/2019 X 19
2/2/2019 X 20
***2/3/2019 X 56
Avg Time Taken By Job X (till 2nd feb) 14.66666667
Standard Deviation(Calculated till 2nd feb) 4.69041576
Live Deviation (as on 3rd feb) 13.79855065
*For Job Y - *
----------------
datetime Job Name Job Duration(in mins)
1/25/2019 Y 50
1/26/2019 Y 50
1/27/2019 Y 51
1/28/2019 Y 53
1/29/2019 Y 59
1/30/2019 Y 48
1/31/2019 Y 49
2/1/2019 Y 53
2/2/2019 Y 55
***2/3/2019 Y 200
Avg Time Taken By Job Y (till 2nd feb) 52
Standard Deviation(Calculated till 2nd feb) 3.4278273
Live Deviation (as on 3rd feb) 44.50572997
Затем я подумал о создании новой таблицы, которая будет структурирована как -
** Производная таблица - **
Job Name Avg. Duration Acceptable Deviation Live Deviation
X 14.66666667 4.69041576 13.79855065
Y 52 3.4278273 44.50572997
**NOTE:** the Avg calculated ( till 2nd feb) for the above table
Мой анализ
Начиная с отклонения в реальном времени (что является результатом выполнения заданий X и Y, выполнявшихся намного быстрее, чем обычно)является слишком высоким по сравнению со стандартным отклонением, будет взят один из возможных результатов, как указано выше.
Вопросы, на которые необходимо ответить
- Это правильный подход?
- Какой лучший подход я могу использовать?
- Существует ли какая-либо библиотека Native python, которую можно использовать для любых целей (средняя, дисперсия и т. Д.)?