Why SparkR
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载 。
而Spark力图整合机器学习(MLib)、图算法(GraphX)、流式计算(Spark Streaming)和数据仓库(Spark SQL)等领域,通过计算引擎Spark,弹性分布式数据集(RDD),架构出一个新的大数据应用平台。
SparkR 是一个提供轻量级前端的 R 包,在 R 的基础上加入了 Spark 的分布式计算和存储等特性。在 Spark 1.6.1 中,SparkR 提供了一个分布式数据框(DataFrame)的实现,它能够支持诸如选取、过滤和聚集等操作。这个特性与 R 语言自身提供的特性类似,但 SparkR 能够作用于更大规模的数据集。SparkR 是一个提供轻量级前端的 R 包,在 R 的基础上加入了 Spark 的分布式计算和存储等特性。汇集了spark和R本身的诸多优点,如下图。
How to use it?
- SparkR特有SparkDataFrame
SparkDataFram要实现MapReduce的函数式操作
- dapply
- dapplyCollect
- gapply
其中dapply的框架如下图所示:
dapply 的用法:
- dapply(x,fun,schema)
- dapply(x,fun)
- 把fun函数应用到SparkDataFrame的每一个数据切片,然后把结果收集回本机成为data.frame;
- R函数的输入、输出均为data.frame
- 指定schema,R函数输出必须匹配schema
- example:
df <- creatDataFrame(sqlContext,mtcars)
df1 <- dapply(df,functuion(x){x+1},schema(df))
dapplyCollect
其中dapply的框架如下图所示:
ldf <- dapplyCollect(df,function(x){x+1})