京公网安备 11010802034615号
经营许可证编号:京B2-20210330
原文 | Spark 2015 Year In Review
翻译 | 牛亚真
来自 | CSDN
Apache Spark在2015年得到迅猛发展,开发节奏比以前任何时候都快,在过去一年的时间里,发布了4个版本(Spark 1.3到Spark 1.6),各版本都添加了数以百计的改进。
给Spark贡献过源码的开发者数量已经超过1000,是2014年年末人数的两倍。据我们了解,不管是大数据或小数据工具方面,Spark目前是开源项目中最活跃的。对Spark的快速成长及社区对Spark项目的重视让我们深感责任重大。
在Databricks,我们仍然在努力推动Spark向前发展,事实上,2015年我们贡献给Spark的代码量是其它任何公司的10倍之多。在本博文中,将重点突出2015年加入到项目中的主要开发内容。
1.数据科学API,包括DataFrames,机器学习流水线(Machine Learning Pipelines)及R语言支持;
2.平台API;
3.Tungsten项目和性能优化;
4.Spark流计算。
在见证快速开发节奏的同时,也很高兴目睹了用户采用新版本的速度。例如,下图给出的是超过200个客户在Databricks运行Spark版本的情况(注意单个客户同时可以运行多个版本的Spark)。
从上图中可以看到,Spark用户在紧随最新版本方面积极性很高,在Spark 1.5发布后的仅三个月内,大多数的客户便在使用它,同时有一小部分客户已经在试用2015年11月底发布的预览版本的Spark 1.6。现在,让我们来详细说明2015年Spark的主要变化:
数据科学API: DataFrame,ML Pipelins和R
在Spark之前,大数据相关读物总是会涉及一系列令人望而生畏的概念,从分布式计算到MapReduce函数式编程。从而,大数据工具主要由那些掌握高级复杂技术水平的数据基础团队使用。
Spark在2015年首要发展主题是为大数据构建简化的APIs,类似于为数据科学构建的那样。我们并非逼迫数据科学家去学习整个新的发展范式,实际上是想要降低学习曲线,提供类似于他们已经熟悉的工具。
为了达此目的,下面介绍下Spark的三个主要API附件。
DataFrames:针对结构化的数据,是一个易用并且高效的API,类似于小数据工具,像Python中的R和Pandas。
Machine Learning Pipelines:针对完整的机器学习工作流,是一个易用的API。
SparkR:与Python一起,R是深受数据科学家欢迎的编程语言。只需简单的学习一下,数据科学家马上就可以使用R和Spark处理数据,比他们的单一机器处理数据强大的多。
虽然这些API仅仅发布了数月,根据2015年Spark调查报道,使用DataFrame API的Spark用户已占62%。正如调查结果所示,调查对象大部分人都把自己定位为数据工程师(41%)或数据科学家(22%),数据科学家对Spark兴趣的上升通过其使用的开发语言能更明显地说明问题,58%的调查对象使用Python(相比2014年增幅超过49%),18%的受访者使用R API。
由于我们发布了DataFrames,因此也收集了社区的反馈,其中最为重要的反馈是:对于构建更大型、更复杂的数据工程项目,经典RDD API所提供的类型安全特性十分有用。基于此反馈,针对这些不同种类的数据,我们正在Spark 1.6中开发一个新类型Dataset API。
平台APIs
对应用开发者来说,Spark正成为通用的运行时环境。应用程序仅需要针对单个集合的API进行编程便可以运行在不同种类的环境上(on-prem、cloud、Hadoop等)及连接不同种类的数据源。在本年年初,我们便为第三方开发人员引入了标准的可插拔数据源API,它可以智能地解析数据源格式。目前支持的数据源包括:
CSV, JSON, XML
Avro, Parquet
MySQL, PostgreSQL, Oracle, Redshift
Cassandra, MongoDB, ElasticSearch
Salesforce, Google Spreadsheets
为便于查找数据源和算法对应的库,我们也引入了Spark核心存储库spark-packages.org。
另外一个有趣的趋势是Spark早期使用者大多数与Hadoop结合起来使用,随着Spark的发展我,Hadoop不再代表着大多数Spark使用时。根据2015年Spark调查报告,48%的Spark部署方式为Spark standalone集群管理器,而Hadoop Yarn的使用仅为40%左右。
Tungsten项目和性能优化
根据2015年Spark调查报告,91%用户认为性能是Spark最重要的特征,因此,性能优化始终是Spark开发中的一个重要内容。
在今年年初,我们启动了Tungsten项目——被设计用于提高Spark内核架构的性能和健壮性的重要改进。Spark 1.5中已经提供了Tungsten的初步功能,这其中包括二进制处理(binary processing),它避免使用Java对象模型那种传统二进制内存布局格式。二进制处理极大地降低了数据密集型任务处理时的垃圾回收压力,除此之外,Tungsten还包括新的代码生成框架,在运行时对用户代码中的表达式计算生成相应经过优化的字节码。2015年发布的四个Spark版本,我们也添加了大量能够经过代码生成的内置函数,例如日期和字符串处理等常见任务。
另外,数据处理性能在查询执行时也非常重要,Parquet已经成为Spark中最常用的数据格式,其扫描性能对许多大型应用程序的影响巨大,在Spark 1.6当中,我们引入了一种新的Parquet读取器,该读取器针对平滑模式(flat schemas)使用一种经过优化的代码路径,在我们的基准测试当中,该新的读取器扫描吞吐率增加了近50%。
Spark流处理
随着物联网的崛起,越来越多的机构正在部署各自的流处理应用程序,将这些流处理程序同传统的流水线结合起来至关重要,Spark通过利用统一引擎进行批处理和流数据处理简化了部署难度。2015年Spark 流处理中增加的主要内容包括:
直接Kafka连接器:Spark 1.3 改进了与Kafka间的集成,从而使得流处理程序能够提供只执行一次数据处理的语义并简化操作。额外的工作提供了容错性和保证零数据丢失。
Web UI进行监控并帮助更好地调试应用程序:为帮助监控和调试能够7*24小时不间断运行的流处理程序,Spark 1.4 引入了能够显示处理时间线和直方图的新Web UI,同时也能够详细描述各离散Streams
状态管理10倍提升。在Spark 1.6当中,我们重新设计了Spark流处理中的状态管理API,新引入mapWithState API,它能够线性地扩展更新的记录数而非记录总数。在大多数应用场景中能够达到一个数量级的性能提升。
结束语
Databricks目前在Spark用户培训和教育方面投入巨大,在2015年,我们与加州大学伯克利分校、加州大学洛杉矶分校合作并提供两个大规模在线开放课程。第一个课程是Apache Spark大数据处理入门,教授学生使用Spark和数据分析;第二个课程是可扩展的机器学习,教授学生使用Spark进行机器学习。这两门课程在edX平台上都是免费的,在我们发布此消息后,目前已经有超过125000个学生注册,我们计算在今年完成对他们的培训。
我们对今年与社区的共同努力所带来的进步感到自豪,也为能够继承努力给Spark带来更丰富的特性感到激动,想了解2016年的开发内容,请继续保持对我们博客的关注。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】软件、洞察力、大数据、产品、经验、硬件、流量、创新、决策、数据安全、网络安全、数据分析、决策制定、数据挖 ...
2026-06-18在方案选型、效果复盘、产品评估、供应商筛选等各类业务决策场景中,仅凭单一指标下结论往往会陷入 “以偏概全” 的误区。多维度 ...
2026-06-18 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-06-18在数据分析、用户运营与业务增长的工作体系中,漏斗拆解是最基础也最高频的问题定位方法。很多业务场景下,我们只能看到最终的转 ...
2026-06-17在数据库开发、数据清洗与报表统计场景中,数值类型转换为日期是高频刚需操作。业务系统常以 Unix 时间戳、整型日期(如20240617 ...
2026-06-17 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-06-17【核心关键词】数据库、电商、知识、产品、数据产品、监管业务、产品经理、业务系统、用户行为分析、用户分析、数据分析、电商 ...
2026-06-16在 Python 动态类型与面向对象的编程体系中,变量定义与类实例化是构建代码逻辑的两大核心基石。变量是数据存储、传递与运算的基 ...
2026-06-16 很多数据分析师每天与Excel打交道,但当被问到“表格结构数据和表结构数据有什么区别”“数据类型误判会引发哪些分析错误” ...
2026-06-16在 MySQL 查询性能优化体系中,索引是降低查询耗时、提升数据库吞吐的核心手段。其中联合索引与覆盖索引是实际开发中最高频的两 ...
2026-06-15在数据仓库建设与商业智能分析体系中,维度建模是应用最广泛的建模方法论,而事实表与维度表是维度建模的两大核心构件,共同构成 ...
2026-06-15 很多数据分析师能熟练计算指标,但当被问到“这家企业的核心业务目标是什么”“如何把模糊的战略目标拆解为可量化的指标”“ ...
2026-06-15在数据分析、业务监控、运营复盘等场景中,列值趋势计算是核心需求之一。无论是分析销售额的月度增长、用户活跃的变化趋势、库存 ...
2026-06-12在数字经济深度渗透的当下,消费者的购买行为已从过去的 “被动接受” 转变为 “主动决策”。流量红利消退、获客成本攀升、用户 ...
2026-06-12CDA三级认证是三个级别中的塔尖,全面考察数据战略、团队领导和复杂项目的综合能力。它所对应的《敏捷数据挖掘》教材,不再局限 ...
2026-06-12在游戏产业的商业逻辑中,付费玩家是支撑游戏生存与发展的核心支柱。行业普遍遵循 “二八定律”:20% 的付费玩家贡献了游戏 80% ...
2026-06-11【核心关键词】企业、定位、传统、产品、互联网、可视化、业务侧、数字化、结构化、数据分析、传统制造业、市场状态、发展空间 ...
2026-06-11 解读《CDA二级教材:量化策略分析(2025)》的全景结构与学习逻辑 ” CDA二级认证是企业招聘数据分析师时最常提及的证书门槛 ...
2026-06-11【核心关键词】药企、可视化、营销、分类、数据分析师、销售数据、业务人员、指导方向、分析报告、营销数据、营销医生 【专访摘 ...
2026-06-10在统计学分析、问卷调研、实验验证、业务复盘等场景中,卡方检验与 T 检验是应用最广泛的两类基础假设检验方法。前者专门处理分 ...
2026-06-10