Spark1.4发布,引入SparkR
Spark1.4版本终于发布了,这一版本的最大亮点在于加入了SparkR,这一R包将使得数据科学家可以在R环境下分析大数据或者进行交互式作业!
R的并行能力和对大数据的支持能力一直备受诟病,虽然R可以高效的进行数据处理和机器学习任务,但R的处理能力受限于内存的大小。由AMPlab开发的SparkR提供了R与Apache Spark的接口,借助Spark的分布式计算引擎,我们可以在R环境下运行大规模的数据处理任务。
项目历史
SparkR最初是由AMPlab开发的项目,旨在整合R的易用性和Spark的可扩展能力。这一项目后来得到了开源社区的大力支持,性能大幅提高。最近,SparkR项目被并入Apache Spark孵化项目并在1.4版本中作为alpha的组件发布。
SparkR DataFrames
SparkRd的核心是SparkR DataFrames,是一Spark为基础的分布式数据框架。Data Frames作为R的数据处理基本对象其概念已经被扩展到很多的语言。dplyr包包含着大量对Data Frames的简化操作。SparkR 的DataFrames类似于R的Data Frames并且提供了类似于dplyr包的API函数,使之能很好的处理大数据。
关于SparkR的更多资料可以参考官方文档
#flights是sparkR 的DataFrames #使用head函数展示数据的前几行 head(flights) # 过滤出所有从JFK起飞的航班 jfk_flights <- filter(flights, flights$origin == "JFK") #将DataFrames转化为R的Data Frame local_df <- collect(jfk_flights)
SparkR整合带来的优势
轻松地使用数据源API
借助Spark SQL API,SparkR可以从包括Hive,JSON,Parquet文件等多种数据源中读取数据。
#flights是sparkR 的DataFrames #使用head函数展示数据的前几行 head(flights) # 过滤出所有从JFK起飞的航班 jfk_flights <- filter(flights, flights$origin == "JFK") #将DataFrames转化为R的Data Frame local_df <- collect(jfk_flights)
Data Frame的优化
SparkR的DataFrames也继承了Tungsten项目中的高性能计算的功能。下图展示了使用R、Python、Scala在单机上的100亿个整数对上运行group-by aggregation函数的结果,从图中可以看出使用哪个高性能计算引擎使得SparkR的性能十分接近Python和Scala。
可扩展性
通过Spark R的DataFrames执行的操作会自动分配到集群的所有核上。因而,SparkR DataFrames可以被用于TB级的数据并运行在上千节点的机器上。
展望
未来,SparkR还会加入更多的功能,这包括高级别的机器学习算法等等。有关SparkR的更多信息可以关注Spark Summit2015
本文由邢代涛编译自Databricks的博客