Apache Spark 项目刚刚发布了1.3 版本。该版本主要的功能改进包括新增DataFrames API,更加成熟的Spark SQL,机器学习库MLlib 中新增的大量方法以及更好地整合Spark Streaming 与Apache Kafka。
这一版本主要的功能改进之一就是新增的 DataFrames API 。效仿同名的 R 语言数据结构,其目标是为列表数据处理提供更好的支持。每个 DataFrame 包含一个表,该表中包含带有类型和名称的列,此外,DataFrame 还提供与 SQL 中的查询类似的过滤、分组或计算聚合等操作。
DataFrames 与分布式 SQL 查询引擎 Spark SQL 结合紧密。可以通过 SQL 查询结果集或 RDD 构建 DataFrames,也可以从 Parquet 格式的文件中加载 DataFrames。目前来说,Spark 中主流的分布式数据集合类型是 RDD(弹性分布式数据集),不过 DataFrames 旨在为结构化数据提供更好的支持。
作为 Spark 一部分的机器学习库 Spark MLlib 新增了大量的学习算法,如用于识别文档中的主题并根据主题对文档进行聚类的概率统计方法——隐含狄利克雷分布( Latent Dirichlet Allocation ),或用于多级预测任务的多项式逻辑斯蒂回归( multinomial logistic regression )。此外实现了对分布式线性代数的初步支持,其中矩阵块是以分布式的方式存储的。这一功能对更多复杂数据分析的任务来说非常有意义,例如矩阵因子分解由于矩阵过大而经常会出现无法装载到主内存中的情况。
在这些算法之上,Spark 还为数据分析增加了更高级的功能,如导入导出已掌握的预测模型以及在 1.2 版本中引入的以高级方式指定数据传输管道的 Pipeline API 。在数据科学中,这种管道经常用于从原始数据中提取相关特征。
此外,Spark 已经直接与 Apache Kafka 集成,可以接入实时事件数据。
Apache Spark 最初于 2009 年源自 UC Berkeley AMPLab。Spark 可以独立运行,也可以运行在已经安装的 Hadoop 之上,并提供比原始 Hadoop 中的 MapReduce 处理模型更大的操作集合。Spark 会尽可能的将数据保留在内存中,与更加依赖磁盘的 MapReduce 相比,在性能上有进一步的提升。另外,通过将数据采集到缓存中然后定期小批量地进行处理,Spark 可以接近实时地完成事件数据处理。与 Spark 类似的项目还有包含类似功能集合及查询优化和持续流数据处理引擎的 Apache Flink ,以及运行于 MapReduce 处理模型之上,并提供类似的高级操作集合的 Cascading 和 Scalding 。
查看英文原文: Apache Spark 1.3 Released, Data Frames, Spark SQL, and MLlib Improvements
评论