Spark 1.1.0 是 1.X 系列的第一个次要版本。此版本为 Spark 核心带来了操作和性能改进,并显著扩展了 Spark 最新的库:MLlib 和 Spark SQL。它还增强了 Spark 的 Python 支持,并为 Spark Streaming 模块添加了新组件。Spark 1.1 凝聚了 171 位贡献者的工作,是 Spark 发布版本中贡献者最多的一次!
要下载 Spark 1.1,请访问下载页面。
总体而言,Spark 1.1 增加了功能以提高稳定性与性能,特别是对于大规模工作负载。Spark 现在在缓存操作期间对倾斜块执行磁盘溢写,以防止单个 RDD 分区过大时发生内存溢出。在 Spark 1.0 中引入的聚合期间磁盘溢写功能已移植到 PySpark。此版本引入了针对超大规模 shuffle 进行优化的新 shuffle 实现。这种“基于排序的 shuffle”将在下一个版本中成为默认设置,现在已可供用户使用。对于拥有大量 reducer 的作业,我们建议开启此功能。此版本还增加了多项可用性改进,用于监控长时间运行或复杂作业的性能。其中的变化包括在 Spark UI 中显示的更完善的命名累加器、针对进度任务的指标动态更新,以及针对读取输入数据的任务的输入指标报告。
Spark SQL 在此版本中增加了一些新功能和性能改进。一个 JDBC/ODBC 服务器 允许用户从许多不同的应用程序连接到 SparkSQL,并提供对缓存表的共享访问。一个新的模块提供了 直接将 JSON 数据加载到 Spark 的 SchemaRDD 格式中 的支持,包括自动模式推断。Spark SQL 在此版本中引入了 动态字节码生成,这项技术显著加快了执行复杂表达式评估的查询的速度。此版本还增加了对将 Python、Scala 和 Java lambda 函数注册为 UDF 的支持,这些函数可以直接在 SQL 中调用。Spark 1.1 增加了 公共类型 API,允许用户从自定义数据源创建 SchemaRDD。最后,对原生 Parquet 支持以及整个引擎都添加了许多优化。
MLlib 在此版本中增加了多项新算法和优化。1.1 版本引入了一个 新的统计包库,提供了探索性分析功能。这些功能包括分层抽样、相关性、卡方检验以及创建随机数据集的支持。此版本增加了特征提取(Word2Vec 和 TF-IDF)和特征转换(归一化和标准缩放)的工具。新增的功能还包括对 非负矩阵分解 和通过 Lanczos 进行 SVD 的支持。决策树算法已 在 Python 和 Java 中添加。还添加了一个树聚合原语,以帮助优化许多现有算法。MLlib 1.1 的整体性能得到提升,许多算法的性能提高了约 2-3 倍,对于大规模决策树问题,性能最高可提高 5 倍。
Spark Streaming 新增了一个数据源 Amazon Kinesis。对于 Apache Flume,支持一种新的模式,可以从 Flume 拉取数据,简化部署并提供高可用性。第一组 流式机器学习算法 随流式线性回归一起引入。最后,为流式输入添加了 速率限制。GraphX 增加了 顶点和边的自定义存储级别,并全面 改进了数值精度。最后,GraphX 添加了一个新的标签传播算法。
Spark 1.1.0 向后兼容 Spark 1.0.X。一些配置选项的默认值已更改,这可能与现有用户相关
spark.io.compression.codec
的默认值现在是 snappy
,以改善内存使用。可以通过切换到 lzf
来恢复旧行为。spark.broadcast.factory
的默认值现在是 org.apache.spark.broadcast.TorrentBroadcastFactory
,以提高广播效率。可以通过切换到 org.apache.spark.broadcast.HttpBroadcastFactory
来恢复旧行为。spark.shuffle.spill
设置为 false
来恢复旧行为。spark.default.parallelism
设置为集群中的核心数来恢复旧行为。感谢所有贡献者!