Why SparkR
Spark 是一種與 Hadoop 相似的開源集群計算環(huán)境俊鱼,但是兩者之間還存在一些不同之處龙誊,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越秘案,換句話說生真,Spark 啟用了內(nèi)存分布數(shù)據(jù)集什燕,除了能夠提供交互式查詢外卿闹,它還可以優(yōu)化迭代工作負(fù)載 揭糕。
而Spark力圖整合機(jī)器學(xué)習(xí)(MLib)萝快、圖算法(GraphX)、流式計算(Spark Streaming)和數(shù)據(jù)倉庫(Spark SQL)等領(lǐng)域著角,通過計算引擎Spark揪漩,彈性分布式數(shù)據(jù)集(RDD),架構(gòu)出一個新的大數(shù)據(jù)應(yīng)用平臺吏口。
SparkR 是一個提供輕量級前端的 R 包奄容,在 R 的基礎(chǔ)上加入了 Spark 的分布式計算和存儲等特性。在 Spark 1.6.1 中产徊,SparkR 提供了一個分布式數(shù)據(jù)框(DataFrame)的實現(xiàn)昂勒,它能夠支持諸如選取、過濾和聚集等操作舟铜。這個特性與 R 語言自身提供的特性類似戈盈,但 SparkR 能夠作用于更大規(guī)模的數(shù)據(jù)集。SparkR 是一個提供輕量級前端的 R 包谆刨,在 R 的基礎(chǔ)上加入了 Spark 的分布式計算和存儲等特性塘娶。匯集了spark和R本身的諸多優(yōu)點,如下圖痊夭。
How to use it刁岸?
- SparkR特有SparkDataFrame
SparkDataFram要實現(xiàn)MapReduce的函數(shù)式操作
- dapply
- dapplyCollect
- gapply
其中dapply的框架如下圖所示:
dapply 的用法:
- dapply(x,fun,schema)
- dapply(x,fun)
- 把fun函數(shù)應(yīng)用到SparkDataFrame的每一個數(shù)據(jù)切片,然后把結(jié)果收集回本機(jī)成為data.frame她我;
- R函數(shù)的輸入虹曙、輸出均為data.frame
- 指定schema,R函數(shù)輸出必須匹配schema
- example:
df <- creatDataFrame(sqlContext,mtcars)
df1 <- dapply(df,functuion(x){x+1},schema(df))
dapplyCollect
其中dapply的框架如下圖所示:
ldf <- dapplyCollect(df,function(x){x+1})