Spark提供了輕量的前端。SparkR提供了Spark中彈性分散式資料集(RDD)的API,使用者可以在叢集上透過R shell互動性的執行job。例如,我們可以在HDFS上讀取或寫入檔案,也可以使用 lapply 來定義對應每一個RDD元素的運算。 sc <- sparkR.init(“local”) lines <- textFile(sc, “hdfs://data.txt”) wordsPerLine <- lapply(lines, function(line) { length(unlist(strsplit(line, “ ”))) }) 除了常見的RDD函式式運算元reduce、reduceByKey、groupByKey和collect之外,SparkR也支援利用 lapplyWithPartition 對每個RDD的分割槽進行操作。 SparkR也支援常見的閉包(closure)功能:使用者定義的函式中所引用到的變數會自動被髮送到叢集中其他的機器上。參見一下例子中使用者閉包中引用的 initialWeights 會被自動傳送到叢集其他機器上。 lines <- textFile(sc, “hdfs://data.txt”) #niniaialWeights is automatically serialized createMatrix <- function(line) { as.numeric(unlist(strsplit(line, “ ”))) %*% t(initialWeights) }
Spark提供了輕量的前端。SparkR提供了Spark中彈性分散式資料集(RDD)的API,使用者可以在叢集上透過R shell互動性的執行job。例如,我們可以在HDFS上讀取或寫入檔案,也可以使用 lapply 來定義對應每一個RDD元素的運算。 sc <- sparkR.init(“local”) lines <- textFile(sc, “hdfs://data.txt”) wordsPerLine <- lapply(lines, function(line) { length(unlist(strsplit(line, “ ”))) }) 除了常見的RDD函式式運算元reduce、reduceByKey、groupByKey和collect之外,SparkR也支援利用 lapplyWithPartition 對每個RDD的分割槽進行操作。 SparkR也支援常見的閉包(closure)功能:使用者定義的函式中所引用到的變數會自動被髮送到叢集中其他的機器上。參見一下例子中使用者閉包中引用的 initialWeights 會被自動傳送到叢集其他機器上。 lines <- textFile(sc, “hdfs://data.txt”) #niniaialWeights is automatically serialized createMatrix <- function(line) { as.numeric(unlist(strsplit(line, “ ”))) %*% t(initialWeights) }