使用机器学习进行自动调度

数据挖掘 自动化
2022-02-22 19:11:04

我对数据科学很陌生,但我有一个我想解决的用例。

我想构建一个数据同步计划程序,它在每次计划触发后跟踪数据同步量并自动调整下一个计划。

例如 :

让我们假设我有 3 个工作要执行。目前,我们将它们中的每一个保持在 5 分钟的间隔(例如),但这需要自动安排。

  • 所以让在上午 10 点作业 1 被执行并获得 10 个条目。
  • 在上午 10 点,作业 2 被执行并获得了 100 个条目。
  • 上午 10 点,作业 3 被执行并获得了 200 个条目。

对于这种情况,作业 1 获得的数据流比作业 2 和作业 3 少。在这种情况下,自动调度程序将自动调整间隔并建议将下一次执行更改为:

  • 作业 1 - 可能是 10 分钟间隔
  • 作业 2 - 可能是 5 分钟间隔
  • 作业 3 - 可能是 2 分钟间隔。

调度程序也将根据基于时间的历史数据进行自我训练,例如,如果作业 3 的数据流在上午 10 点较多,则在下午 1 点可能较少,此时作业 1 可能有更多数据。调度程序将自动调整时间,并以比作业 3 更短的时间间隔为作业 1 制定下一个下午 1 点的安排。

你能建议我任何我可以遵循的算法来支持这种情况吗?或者即使你可以帮助我如何继续学习机器学习,它也会对我有很大帮助。

1个回答

我想构建一个数据同步计划程序,它在每次计划触发后跟踪数据同步量并自动调整下一个计划。

老实说,这并没有立即让我觉得这是一个“使用机器学习”的问题。如果您只是希望调度程序将下一次运行安排在一段由当前批处理中处理的记录数决定的时间之后,那么这是一个非常简单且确定性的公式。您可以将默认间隔设置为 20 分钟,然后执行以下操作:

next gap = 10 * (10 / n)

其中 n 是上次运行中处理的记录数。在这种情况下,这意味着:

  • 所以让在上午 10 点作业 1 被执行并获得 10 个条目。
    • 在上午 10 点,作业 2 被执行并获得了 100 个条目。
    • 上午 10 点,作业 3 被执行并获得了 200 个条目。

下一个作业 1 将安排在20 * (20 / 20) = 20几分钟,下一个作业 2 将安排在几分钟,20 * (20 / 100) = 4下一个作业 3 将安排在20 * (20 / 200) = 2几分钟。

如果您真的想为此使用 ML,我想我建议使用ARIMAProphet之类的时间序列预测算法来预测每个作业在接下来的一个小时内必须处理的样本数量,并设置下一次运行- 基于此的适当时间。