我的Pyspark有以下情况:
在我的驱动程序中(驱动程序.py),我从另一个文件调用函数(生产周期)在
latest_prods = prod.featurize_prods().
驾驶员代码:
^{pr2}$然后我在这里做一些reduceByKey
代码。。。生成total_prods_processed
。在
最后我打电话给:
total_prods_processed.saveAsTextFile(...)
我想同时生成最新的和旧的。两者都是在相同的SparkContext
中创建的。有可能吗?如果没有,我如何实现这个功能?在
这是自动产生火花的东西吗?我在运行代码时没有看到这种行为,所以请让我知道这是否是一个配置选项。在
在网上搜索后,我认为你的问题可以通过线程解决。它很简单,只需为旧的_prod和最新的_prod工作创建两个线程。在
检查this post以获得简化的示例。由于Spark是线程安全的,所以您可以在不牺牲任何东西的情况下获得并行效率。在
简单的回答是不行,您不能在同一spark上下文中同时在两个不同的rdd上调度操作。但是有一些解决方法,您可以在同一集群上的两个不同的SparkContext中处理它们,并调用SaveAsTextFile。然后在另一份工作中阅读这两个词来执行联合。(文档中不建议这样做)。 如果您想尝试这个方法,这里将使用spark jobserver讨论它,因为spark默认不支持多个上下文:https://github.com/spark-jobserver/spark-jobserver/issues/147
但是,根据您执行的操作,没有理由同时处理这两个操作,因为您需要完整的结果来执行联合,spark将把这些操作分成两个不同的阶段,然后一个接一个地执行。在
相关问题 更多 >
编程相关推荐