我嘗試執行一個非常基本的Spark動作(head()
)以收集我從R數據框創建的Spark DataFrame的輸出。 我想在yarn-client
部署模式下執行此操作。我在羣集的所有節點上安裝了R
。SparkR:從R數據框收集數據不適用於RStudio
當我從RStudio
運行該應用程序:
Sys.setenv(SPARK_HOME = "/usr/local/spark160")
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sc <- sparkR.init(master="yarn-client", appName = "Spark Test",
sparkHome = "/usr/local/spark160/")
sqlContext <- sparkRSQL.init(sc)
df <- createDataFrame(sqlContext, iris)
head(df)
我得到的每一個節點上此錯誤
Java.net.SocketTimeoutException:接受超時
但是,當我直接從SparkR
外殼運行相同的代碼(始終在yarn-client
)一切正常。
我注意到,當我想從HDFS或HIVE來源收集數據幀時,這種差異不會發生。