Spark 1.4最大的看點:支持R語言(SparkR)
R是用于統計分析、繪圖的語言和操作環境。R是屬于GNU系統的一個自由、免費、源代碼開放的軟件,它是一個廣泛應用于統計計算和統計制圖的優 秀編程語言,但是其交互式使用通常局限于一臺機器。為了能夠使用R語言分析大規模分布式的數據,UC Berkeley給我們帶來了SparkR,SparkR就是用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,可以在編譯時候加上-PsparkR
Maven配置屬性。關于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") }
程序運行流程框架如下: