【问题标题】:How can one get sparklyr::spark_apply() to spawn more than one worker?如何让 sparklyr::spark_apply() 产生多个工人?
【发布时间】:2018-05-24 15:21:16
【问题描述】:

我在本地部署中搞砸了{sparklyr},即只有一个盒子,我让 sparklyr 启动所有东西。似乎在本地部署中只生成了一个允许使用机器所有内核的执行程序。当我进入spark_apply()(使用具有多个值的group_by arg)时,我看到一个Rscript --slave 只使用了一个核心。这只是 Spark 的一个限制,即每个执行程序一个 Rscript,还是有某种方法可以让 {sparklyr} 将工作分散到更多工作人员?我的上述假设是否不正确?

【问题讨论】:

    标签: r apache-spark sparklyr


    【解决方案1】:

    这可能来得有点晚。但无论如何:

    你可以通过第一次设置在一台机器上启动多个worker

    SPARK_WORKER_INSTANCES=2
    

    接着跑

    $SPARK_HOME/sbin/start-master.sh
    $SPARK_HOME/sbin/start-slave.sh spark://hostname:7077 --cores 2
    

    这应该会给您两个本地工作人员,每个工作人员都有 2 个核心。然后你可以继续并从 R 启动你的 sparklyr 驱动程序

    cfg <- spark_config()
    sc <- spark_connect(master = "spark://hostname:7077", config = cfg)
    

    现在在运行spark_apply() 之前,请确保您的分区数多于内核数,或许可以调用sdf_repartition()。对我来说,在一台 4 核机器(2 个工人,每个 2 核)和一个由 4 个(或更多)分区组成的 SDF 上,spark_apply() 产生 4 个 R 会话。

    我确实意识到这并不是您所要求的,因为您没有使用安装 sparklyr 的 spark 实例。但是你真的只需要下载一个spark release 并将 $SPARK_HOME 指向你下载 spark 的地方就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 2018-08-21
      • 2019-03-16
      • 2023-03-22
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多