Spark 1.1.0 是 1.X 系列中的第一个小版本。此版本在 Spark Core 中带来了操作和性能改进,以及对 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
设置为群集中核心的数量来恢复旧的行为。感谢每一位贡献者!