小编Lau*_*der的帖子

如何解决 PySpark UDF 中具有边缘情况的分配问题(如匈牙利/线性求和分配)

我有一个分配问题,我想向 SO 社区询问为我的 Spark 数据帧实现此任务的最佳方法(使用 Spark 3.1+)。我将首先描述问题,然后再进行实施。

问题是:我最多有 N 个任务和 N 个个人(在这个问题的情况下,N=10)。每个人执行每项任务都有一定的成本,其中最小成本为 0 美元,最大成本为 10 美元。这是一种匈牙利算法问题,有一些注意事项。

  1. 在某些情况下,任务数少于 10 个和/或个人数少于 10 个,并且不向某人分配任务(或不向个人分配任务)是可以的。
  2. [更复杂的边缘情况/我遇到麻烦的情况] - 列表中可能有一项任务具有该标志multiTask=True(不能超过 1 个multiTask,也可能没有)。如果一个worker的成本低于x多任务,他会被自动分配给多任务,并且在优化过程中该多任务被认为已被占用。
    • 我将分享几个例子。在此示例中,要分配给多任务的 x 值为 1。
      • 如果 10 名工人中有 1 名在多任务上的成本为 0.25,则他会被分配到多任务,然后其他 9 名工人将被分配到其他 9 个任务
      • 如果 10 名工作人员中的 2 名工作人员在多任务上的成本 < 1,则他们都将被分配到多任务,然后其他 8 名工作人员将被分配到剩余 9 个任务中的 8 个。1 个任务不会分配给任何人。
      • 如果所有 10 个工作人员在多任务上的成本均 < 1,则将所有人员分配给该多任务。这种情况非常罕见,但却是可能的。
      • 如果没有工人在多任务上的成本< 1,则在优化期间多任务将仅分配给一个人,以最小化成本。

这是 Spark 数据框的样子。注意:为了简单起见,我展示了一个示例,其中 N=3(3 个任务,3 个个人)。

from pyspark.sql import Row

rdd …
Run Code Online (Sandbox Code Playgroud)

python hungarian-algorithm apache-spark pyspark scipy-optimize

11
推荐指数
1
解决办法
897
查看次数

zookeeper和raft有什么区别?

这真是愚蠢,但动物园管理员做的那个木筏没有 - 不是说zab而是动物园管理员本身.

我得到筏子领导选举等服务器,但动物园管理员的意义何在?是否有任何人有类比

algorithm distributed-computing distributed-system raft

8
推荐指数
2
解决办法
4162
查看次数

在 pyspark 中实现递归算法以查找数据帧内的配对

我有一个 spark 数据框 ( prof_student_df),其中列出了学生/教授对的时间戳。每个时间戳有 4 位教授和 4 位学生,每个教授-学生对都有一个“分数”(因此每个时间段有 16 行)。对于每个时间范围,我需要找到教授/学生之间的一对一配对,以最大限度地提高总分。每个教授只能在一个时间范围内与一名学生配对。

例如,这是一个时间范围内的配对/分数。

+------------+--------------+------------+-------+----------+
|    time    | professor_id | student_id | score | is_match |
+------------+--------------+------------+-------+----------+
| 1596048041 | p1           | s1         |   0.7 | FALSE    |
| 1596048041 | p1           | s2         |   0.5 | TRUE     |
| 1596048041 | p1           | s3         |   0.3 | FALSE    |
| 1596048041 | p1           | s4         |   0.2 | FALSE    |
| 1596048041 | p2           | s1         |   0.9 | TRUE …
Run Code Online (Sandbox Code Playgroud)

python apache-spark apache-spark-sql pyspark

7
推荐指数
1
解决办法
731
查看次数

如何创建与 kinesis 的持久 websocket 连接?(我假设使用 ec2)

我将如何创建 WS 侦听器并流式传输到 Kinesis?我已经看到 lambdas -> kinesis 的 api 调用示例,但我正在寻找持久连接的东西。我是 websocket 的客户端,必须在 3 秒内发送一个 api 令牌,但我不必与套接字通信,我是侦听器。我不控制 Websocket。

我可以使用 Websocket 连接包并编写一个脚本来连接和验证,只是不确定这将如何设计(即它永远不会停止运行,所以除非我错了,否则没有 while 循环)

amazon-ec2 amazon-web-services websocket amazon-kinesis

5
推荐指数
0
解决办法
310
查看次数