BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SparkR发布 让R跑在Spark上

| 作者 包研 关注 0 他的粉丝 发布于 2014年1月27日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

SparkR是AMPLab发布的一个R开发包,为Apache 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")
   initialWeights <- runif(n=D, min = -1, max = 1)
   createMatrix <- function(line) {
     as.numeric(unlist(strsplit(line, " "))) %*% t(initialWeights)
   }
   # initialWeights is automatically serialized
   matrixRDD <- lapply(lines, createMatrix)

用户还可以很容易的在已经安装了R开发包的集群上使用SparkR。includePackage 命令用于指示在每个集群上执行操作前读取开发包。以下是个例子:

generateSparse <- function(x) {
    # Use sparseMatrix function from the Matrix package
    sparseMatrix(i=c(1, 2, 3), j=c(1, 2, 3), x=c(1, 2, 3))
  }
  includePackage(sc, Matrix)
  sparseMat <- lapplyPartition(rdd, generateSparse)

针对SparkR发布的消息,大数据创业公司DataBricks的创始人之一@hashjoin(辛湜)在微博上评论到:

R是数据分析最常用的工具之一,但是R能处理的数据不能大于一台机器的内存。过去有一些R和Hadoop结合的尝试一般都性能低下,用户体验差。今天AMPLab发布了R的Spark前端,利用R进行大数据交互分析,也可以在节点上利用R的数据分析库,是大数据的一个新利器。

@vinW

我一直就说R matlab 和Spark其实是一路的,内存流派的。Spark这个分布式的高端搞法必将重振内存计算这个领域。

@刘思喆

重磅消息,比预想的要早很多。


感谢辛湜对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT