如何在spark中实现垂直并行?

时间:2017-06-28 23:38:11

标签: apache-spark parallel-processing pyspark

是否可以使用spark并行运行多个计算?

可以从中受益的示例案例:

  • 为大列运行逐列任务。将StringIndexer应用于10K列可以从仅对单个工作人员进行计算并让尽可能多的工作人员处理单列的情况下受益。
  • 为小型数据集运行大量原子任务。例如:

    对于in_path,long_ds_list中的out_path:         spark.read(in_path)。选择('柱&#39)。不同的()写(out_path)

我能想到的最接近的等价物是SparkR.lapply()或.Net Parallel.ForEach(),但是对于集群环境而不是更简单的多线程情况。

1 个答案:

答案 0 :(得分:1)

我认为Spark擅长安排分布式计算任务,并且可以轻松处理您的案例,但您必须自己开发他们的解决方案。我不是说这需要很长时间,但需要花费很多精力,因为它低于Spark SQL,Spark MLlib,Structured Streaming等面向开发人员的API。

您必须使用Spark Core API并创建一个知道如何描述此类计算的自定义RDD。

让我们讨论第一个想法。

  

为大列运行逐列任务。将StringIndexer应用于10K列可以从仅对单个工作人员进行计算并使尽可能多的工作人员处理单个列而受益。

“大列的列式任务”似乎暗示您考虑Spark SQL的DataFrames和Spark MLlib的StringIndexer Transformer。它们是不提供此类功能的更高级别的API。你不应该用它们处理问题。这是一个优化功能,因此您必须深入了解Spark。

我认为你必须重写Spark SQL和Spark MLlib中的高级API,以便使用你自己的优化自定义代码来实现你的功能。

与其他要求相同,但这次你只需要关注Spark SQL(将Spark MLlib放在一边)。

总结一下,我认为两者都有可能进行一些开发(即今天不可用)。

相关问题