繁星coding
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) }