[R]高性能计算SparkR

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本身的诸多优点,如下图。

SparkR是什么.png
SparkR的架构.png

How to use it?

  • SparkR特有SparkDataFrame
SparkDataFrame的特点.png
SparkDataFrame的例子.png

SparkDataFram要实现MapReduce的函数式操作

  • dapply
  • dapplyCollect
  • gapply
    其中dapply的框架如下图所示:
dapply的框架.png

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})
上一篇:[SparkR]


下一篇:[kaggle]DC比赛进程