天天看點

[R]高性能計算SparkRHow to use it?

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))


           
ldf <- dapplyCollect(df,function(x){x+1})
           

繼續閱讀