sp中的pyspark缓存值

2024-10-01 04:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个pyspark代码将调用的python库。作为这个库的一部分,有一个缓慢的函数

我想缓存这个函数的结果,以便在内存中保存一个表(至少在每个工人中)

例如:

def slow_function(x):
   time.sleep(10)
   return x*2


class CacheSlowFunction():

   def __init__(self):
      self.values = {}

   def slow_function(x):
       if x in self.values:
          return self.values[x]
       else:
          res = slow_function(x)
          self.values[x] = res
          return res

def main(x):
   csf = CacheSlowFunction()
   s = 0
   for i in range(x):
     s += csf.slow_function(i)
   return s 

代码由spark调用,如下所示:

map(main, [i for i in range(10000)])

现在,代码将为每个调用创建一个表(self.values)。是否可以在同一个辅助进程上进行的计算中至少共享此表


Tags: 函数代码inselfforreturnmaindef