在spark-submit命令中,是否存在控制并行度的标志

时间:2016-08-27 11:58:41

标签: apache-spark pyspark apache-spark-sql spark-dataframe apache-spark-mllib

在Apache Spark中, 对于" Spark-submit"命令,是否存在"标志"控制并行度。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用num-executors设置执行程序的数量,然后使用--executor-cores--total-executor-cores设置可以使用的核心数。您可以将这些作为命令行参数或在spark配置文件中传递。但这只适用于YARN模式。

然而,Spark中的实际并行性由数据帧/ RDD中的分区数控制。通常,在创建RDD时,可以指定所需的分区数量。您还可以使用sc.defaultParallelism查看默认并行度。因此,如果您分配的内核数量少于内核数量,那么您实际上会浪费一些核心内容。

现在Spark接收RDD,将其分布在整个集群中,并生成在分区上运行的任务(基本上是从代码创建的闭包)。产生的任务数将是群集中的核心数(或您传递的参数)。一般的经验法则是每个核心有2-3个任务,因为Spark中的任务启动时间非常短。