【问题标题】:Can I use multi-threading inside pyspark mapPartitions?我可以在 pyspark mapPartitions 中使用多线程吗?
【发布时间】:2020-09-16 17:10:24
【问题描述】:

我可以在 pyspark mapPartitions 中使用多线程吗?

我正在运行一个 spark 作业,我必须对每一行进行 API 调用。我们正在使用rdd map 运行python 函数来进行API 调用。这些 API 调用需要 0.01 ~ 0.5 秒。

我们可以使用rdd mapParitions 来运行python 多线程函数吗?有什么影响或为什么我们不能使用线程?

注意:我们知道,Spark 可能不是这项工作的最佳工具。另外,由于 PyArrow 依赖,我们不能使用 pandas udf 或矢量化。

图片来源:https://medium.com/ibm-data-science-experience/using-spark-as-a-parallel-processing-framework-for-accessing-rest-based-data-services-cd4c98526784(与本题无关)

【问题讨论】:

    标签: python pyspark


    【解决方案1】:

    如果目标系统设计为能够处理如此多的调用,您应该可以。

    我会建议使用基于非阻塞 IO 的 API 调用,这些调用应该更高效。 如果您必须为手头的任务分配更多 CPU,那么您可以使用 spark.task.cpus 指示 spark 这样做。请注意,这是 Spark 应用程序级别的设置。如果您的数据处理管道较长,这实际上可能会使您的应用程序变慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多