我正在使用pyspark处理数据并生成一些指标(大约25/30)。每个指标彼此独立的生成。由于公司的约束,我无法粘贴代码。但是下面提到了我的代码流
SERVER_API_URL = process.env.SERVER_API_URL + '/mypath';
现在pyspark在编写每个功能时停止执行,然后在其他功能中开始处理DAG。所有这些功能都是DAG,并且彼此不依赖。一个显而易见的解决方案是将其拆分成单独的文件,然后作为单独的作业运行。但是那是我无法使用的选项。有人可以告诉我如何使spark并行运行这些DAG以及并行编写。
非常感谢您的帮助。由于上述串行处理,所以工作花费了太多时间
预先感谢
Manish
答案 0 :(得分:1)
尽管大多数Spark动作本质上是同步的,但是就像我们一个接一个地执行两个动作一样,它们总是像一个接一个地顺序执行。几乎没有可以异步执行的动作。
在某些情况下,当Spark集群的资源没有得到充分利用时,我们可以在不同的RDD上同时执行不同的异步操作。
有一些异步操作,例如:countAsync,collectAsync,takeAsync,foreachAsync和foreachPartitionAsync。
根据您的情况,您可以在foreachPartitionAsync
中实现逻辑。
参考: https://forums.databricks.com/questions/2119/how-do-i-process-several-rdds-all-at-once.html
和
http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.rdd.AsyncRDDActions