【发布时间】:2016-10-05 23:25:16
【问题描述】:
我有一个复杂的函数,我使用 map 函数在 spark 中运行数据集。它位于不同的 python 模块中。调用 map 时,executor 节点没有该代码,然后 map 函数失败。
s_cobDates = getCobDates() #returns a list of dates
sb_dataset = sc.broadcast(dataset) #fyi - it is not trivial to slice this into chunks per date
def sparkInnerLoop(n_cobDate):
n_dataset = sb_dataset.value
import someOtherModule
return someOtherModule.myComplicatedCalc(n_dataset)
results = s_cobDates.map(sparkInnerLoop).collect()
Spark 然后失败,因为它无法导入 myOtherModule。
到目前为止,我已经通过创建一个包含 someOtherModule 的 python 包并在我的 spark 作业之前将其部署到集群来解决这个问题,但这并不能实现快速原型设计。
如何让 spark 将完整代码发送到执行程序节点,而不将所有代码内联到“sparkInnerLoop”中?该代码在我的解决方案中的其他地方使用,我不希望代码重复。
我在独立模式下使用 8 节点集群,v 1.6.2,驱动程序正在我的 pycharm 工作站上运行。
【问题讨论】:
标签: python apache-spark pyspark