Pypark在p中有多个作业

2024-05-23 23:54:02 发布

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

我的Pyspark有以下情况:

在我的驱动程序中(驱动程序.py),我从另一个文件调用函数(生产周期)在

latest_prods = prod.featurize_prods(). 

驾驶员代码:

^{pr2}$

然后我在这里做一些reduceByKey代码。。。生成total_prods_processed。在

最后我打电话给:

total_prods_processed.saveAsTextFile(...)

我想同时生成最新的和旧的。两者都是在相同的SparkContext中创建的。有可能吗?如果没有,我如何实现这个功能?在

这是自动产生火花的东西吗?我在运行代码时没有看到这种行为,所以请让我知道这是否是一个配置选项。在


Tags: 文件代码py驱动程序情况prodlatestpyspark
2条回答

在网上搜索后,我认为你的问题可以通过线程解决。它很简单,只需为旧的_prod和最新的_prod工作创建两个线程。在

检查this post以获得简化的示例。由于Spark是线程安全的,所以您可以在不牺牲任何东西的情况下获得并行效率。在

简单的回答是不行,您不能在同一spark上下文中同时在两个不同的rdd上调度操作。但是有一些解决方法,您可以在同一集群上的两个不同的SparkContext中处理它们,并调用SaveAsTextFile。然后在另一份工作中阅读这两个词来执行联合。(文档中不建议这样做)。 如果您想尝试这个方法,这里将使用spark jobserver讨论它,因为spark默认不支持多个上下文:https://github.com/spark-jobserver/spark-jobserver/issues/147

但是,根据您执行的操作,没有理由同时处理这两个操作,因为您需要完整的结果来执行联合,spark将把这些操作分成两个不同的阶段,然后一个接一个地执行。在

相关问题 更多 >