[英]apply UDF with more than one argument in spark_apply() function sparklyr
[英]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.