通过Spark UDF扩展沉重的Python算法应用程序

时间:2019-07-01 08:08:16

标签: apache-spark pyspark

我将Spark(通过EMR 5.24.0)用作分布式处理引擎,以减轻用Python-Pandas编写的工作量。

从Spark数据帧派生的工作负载,一旦有了该数据帧,就将执行groupBy-Apply pandas UDF。 UDF代码使用Numpy / Scipy作为算法部分实现的一部分。 由于代码实际上是在C ++中运行,因此每个pyspark守护进程都会获取多个CPU(因此,在每个执行程序核心上,都会插入几个CPU) 例如,每个执行器有7个内核,因此它并行处理5个分区,每个进程获得约2-3个CPU,这导致大约需要14-21个CPU。

问题是我只有8个。 所以我想,为什么不将执行程序核心配置为5?这样,每个工作人员只有一名执行者,并且将有更多可用的内核。 首先,这种方法有意义吗?

第二,还有另一种方法可以配置每个工作程序仅运行一个执行程序吗?

0 个答案:

没有答案