我们在EMR集群中运行pyspark,并在一个数据帧中拥有约5000万条记录。每个接口都需要从API添加到其中的字段,该API一次接受100条记录(因此,请求总数约为500k)。我们可以将它们拆分并成功进行API调用,但是偶尔会受到速率的限制。发生这种情况时,进程将继续发送请求,所有请求均返回相同的速率限制响应。因此,当发生这种情况时,我们希望完全停止来自所有从属节点的所有请求并终止该作业。
我们已经缩减了群集的大小,以帮助避免此问题,但是由于响应时间并不总是一致的,因此如果我们已经限制了速率,我们需要一种方法来退出并停止发送请求。
我们在数据框上使用mapPartitions()
,并在其中调用API。
我正在寻找mapPartitions()
所调用的函数中停止所有从属节点上的所有进程的方法,以便每当我们第一次注意到速率受到限制时,所有API调用都会停止。