Spark 1.4最大的看點:支持R語言(SparkR)

jopen 10年前發布 | 24K 次閱讀 Spark

R是用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟件,它是一個廣泛應用于統計計算和統計制圖的優 秀編程語言,但是其交互式使用通常局限于一臺機器。為了能夠使用R語言分析大規模分布式的數據,UC Berkeley給我們帶來了SparkRSparkR就是用R語言編寫Spark程序,它允許數據科學家分析大規模的數據集,并通過R shell交互式地在SparkR上運行作業。值得大家慶幸的是,2015年4月,SparkR已經合并到Apache Spark中,并且將在2015年的夏天隨著Spark 1.4版本一起發布!

一年前由AMPLab開始這個項目,并由AMPLab自己孵化成自己的項目,這樣可以確保SparkR能夠容易地合并到Spark項目中,它不引入任何依賴。SparkR的最終目標將和PySpark一樣,并且遵循PySpark一樣的設計模式。

將SparkR合并到Spark項目中,可以使得R用戶很輕易地使用Spark,這會幫助Spark項目獲得更多地使用用戶。除此之 外,SparkR還在進行很多特性的開發,比如使得R和ML管道交互(SPARK-6805),支持SparkR Streaming(SPARK-6803),使用DataFrame,使用RDD的相關API(SPARK-6836),支持對任何類型的數據進行排序 (SPARK-6814)以及支持acccumulators (SPARK-6815)。和Scala一樣,SparkR也支持多種的集群管理模式,其中就包括了YARN(SPARK-6797),

SparkR遵循Apache 2.0 License,除了要求用戶在他們機器上安裝R和Java之外,不需要依賴任何外部的東西!SparkR的開發人員來自很多地組織,其中包括UC Berkeley, Alteryx, Intel。

在編譯Spark的時候,如果需要使用到SparkR,可以在編譯時候加上-PsparkRMaven配置屬性。關于SparkR的編程指南文檔還在編寫中( SPARK-6806、SPARK-6824),下面使用R語言舉個Word Count的例子:

/**
 * User: 過往記憶
 * Date: 15-04-14
 * Time: 上午00:23
 * bolg: http://www.iteblog.com
 * 本文地址:http://www.iteblog.com/archives/1315
 * 過往記憶博客,專注于hadoop、hive、spark、shark、flume的技術博客,大量的干貨
 * 過往記憶博客微信公共帳號:iteblog_hadoop
 */

library(SparkR)

args <- commandArgs(trailing = TRUE)

if (length(args) != 1) {
  print("Usage: wordcount <file>")
  q("no")
}

# Initialize Spark context
sc <- sparkR.init(appName = "RwordCount")
lines <- textFile(sc, args[[1]])

words <- flatMap(lines,
                 function(line) {
                   strsplit(line, " ")[[1]]
                 })
wordCount <- lapply(words, function(word) { list(word, 1L) })

counts <- reduceByKey(wordCount, "+", 2L)
output <- collect(counts)

for (wordcount in output) {
  cat(wordcount[[1]], ": ", wordcount[[2]], "\n")
}

程序運行流程框架如下:

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!