簡體   English   中英

如何獲得sparklyr :: spark_apply()產生多個工人?

[英]How can one get sparklyr::spark_apply() to spawn more than one worker?

我在本地部署中用{sparklyr}搞亂了,即只是一個盒子,我讓sparklyr啟動了所有東西。 似乎在本地部署中僅生成了一個執行程序,該執行程序被允許使用計算機的所有內核。 當我進入spark_apply() (使用具有多個值的group_by arg)時,我看到一個Rscript --slave僅使用一個內核。 這僅僅是Spark的限制,即每個執行者一個Rscript,還是有某種方法可以使{sparklyr}將工作{sparklyr}給更多的工人? 我的上述假設是否不正確?

這可能會晚一點。 但是無論如何:

您可以通過首先設置在一台計算機上啟動多個工作程序

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版本 ,然后將$ SPARK_HOME指向您下載spark的位置,即可完成此工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM