【问题标题】:Spark reparition() function increases number of tasks per executor, how to increase number of executorSpark repartition() 函数增加每个执行器的任务数,如何增加执行器的数量
【发布时间】:2015-10-08 17:27:18
【问题描述】:

我正在开发 30gb ram(12 核引擎)的 IBM 服务器,我已经提供了所有的核心来激发,但它仍然只使用 1 个核心,我在加载文件时尝试并成功使用命令

val name_db_rdd = sc.textFile("input_file.csv",12)

并且能够为启动作业的处理提供所有 12 个核心,但我想将中间操作之间的操作拆分给执行器,以便它可以使用所有 12 个核心。

图片 - 描述

val new_rdd = rdd.repartition(12)

正如您在这张图片中看到的,只有 1 个执行器正在运行,并且重新分区功能将数据拆分到一个执行器上的多个任务。

【问题讨论】:

  • 请提供您的 SparkConf 配置以及您如何启动应用程序的详细信息,以上内容还不够。

标签: scala apache-spark


【解决方案1】:

这取决于您启动作业的方式,但您可能希望在启动 Spark 作业时将 --num-executors 添加到命令行。

类似

spark-submit
    --num-executors 10 \
    --driver-memory 2g \
    --executor-memory 2g \
    --executor-cores 1 \

可能适合你。

查看Running Spark on Yarn 了解更多详细信息,尽管他们提到的一些开关是特定于 Yarn 的。

【讨论】:

  • 考虑到如果文件相对较小,即使声明使用 10 个执行程序,Spark 仍可能创建单个拆分/分区。可能还需要在程序中指定分区号。另一种方法是更改​​块大小并让 Spark 进行拆分,尽管这种方法有点混乱......
  • 我已经在我的 spark 应用程序中提供了这些详细信息,我提供的上述条件是在采取这些步骤之后。
猜你喜欢
  • 2015-12-13
  • 2018-01-29
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多