问题导读:
1.Spark 2.1.0有哪些主要改动? 2.Spark 2.1.0的性能和稳定性有哪些改进?
Spark 2.1.0是2.x分支中的第二个重要的发布版本(第一个是2.0.x),在该版本中,structured streaming有重大改进,增加了event mark watermark机制和对kafka 0.10.0的支持等特性,为其用于生产环境又迈进一步。除此之外,Spark其他重大改进集中在易用性、稳定性和改进等方面,解决了1200多个ticket(包括新功能、bug fix以及性能改进等)。
下面是Spark 2.1.0中的主要改动:
1. Spark Core和Spark SQL
spark官方发布新版本时,一般将Spark Core和Spark SQL放在一起,可见两者的融合越来越紧,Spark SQL中的DataFrame/Dataset会逐步取代RDD API, 成为Spark中最常用的API。如今,Spark生态系统中的MLLib和Spark Streaming正逐步朝DataFrame/Dataset API方向演进。
(1)API 更新
SPARK-17864:Data type API趋于稳定,即DataFrame和Dataset可用于生产环境,且后续会载保证向后兼容性的前提下,进行演化; SPARK-18351:新增from_json和to_json,允许json数据和Struct对象(DataFrame的核心数据结构)之间相互转换; SPARK-16700:在pyspark中,增加对dict的支持。
(2)性能与稳定性
2. Structured Streaming
Structured Streaining是下一代Spark steaming,基于Dataframe/Dataset API开发的。
(1)API更新
SPARK-17346:支持kafka 0.10.0。支持spark streaming已经支持kafka 0.8.0,0.9.0以及0.10.0,分别通过不同的java包实现(由于kafka 0.8.0和0.9.0客户端是兼容的,所以共用0.8.0实现) SPARK-18124:引入watermark机制解决数据延迟到达问题,可参考googld的MillWheel论文“MillWheel: Fault-Tolerant Stream Processing at Internet Scale”,原理如下:
(2)稳定性
3. MLlib
(1) API 更新
SPARK-5992: Locality Sensitive Hashing实现 SPARK-7159: 基于DataFrame API实现Multiclass Logistic Regression SPARK-16000: ML持久化:让模型加载逻辑与spark 1.x兼容,并基于DataFrame API实现了模型保存部分的逻辑
(2)性能和稳定性
Spark 2.1.0是里程碑的一个版本,其稳定性和性能均有极大提升,建议在公司内部发布一个试用版,一旦经测试达到生产环境要求(主要是稳定性),可马上开始在公司内部推广使用。
来源:weixin 作者:董西成 |