
原文 | 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
在 “神经网络与卡尔曼滤波融合” 的理论基础上,Python 凭借其丰富的科学计算库(NumPy、FilterPy)、深度学习框架(PyTorch、T ...
2025-10-23在工业控制、自动驾驶、机器人导航、气象预测等领域,“状态估计” 是核心任务 —— 即从含噪声的观测数据中,精准推断系统的真 ...
2025-10-23在数据分析全流程中,“数据清洗” 恰似烹饪前的食材处理:若食材(数据)腐烂变质、混杂异物(脏数据),即便拥有精湛的烹饪技 ...
2025-10-23在人工智能领域,“大模型” 已成为近年来的热点标签:从参数超 1750 亿的 GPT-3,到万亿级参数的 PaLM,再到多模态大模型 GPT-4 ...
2025-10-22在 MySQL 数据库的日常运维与开发中,“更新数据是否会影响读数据” 是一个高频疑问。这个问题的答案并非简单的 “是” 或 “否 ...
2025-10-22在企业数据分析中,“数据孤岛” 是制约分析深度的核心瓶颈 —— 用户数据散落在注册系统、APP 日志、客服记录中,订单数据分散 ...
2025-10-22在神经网络设计中,“隐藏层个数” 是决定模型能力的关键参数 —— 太少会导致 “欠拟合”(模型无法捕捉复杂数据规律,如用单隐 ...
2025-10-21在特征工程流程中,“单变量筛选” 是承上启下的关键步骤 —— 它通过分析单个特征与目标变量的关联强度,剔除无意义、冗余的特 ...
2025-10-21在数据分析全流程中,“数据读取” 常被误解为 “简单的文件打开”—— 双击 Excel、执行基础 SQL 查询即可完成。但对 CDA(Cert ...
2025-10-21在实际业务数据分析中,我们遇到的大多数数据并非理想的正态分布 —— 电商平台的用户消费金额(少数用户单次消费上万元,多数集 ...
2025-10-20在数字化交互中,用户的每一次操作 —— 从电商平台的 “浏览商品→加入购物车→查看评价→放弃下单”,到内容 APP 的 “点击短 ...
2025-10-20在数据分析的全流程中,“数据采集” 是最基础也最关键的环节 —— 如同烹饪前需备好新鲜食材,若采集的数据不完整、不准确或不 ...
2025-10-20在数据成为新时代“石油”的今天,几乎每个职场人都在焦虑: “为什么别人能用数据驱动决策、升职加薪,而我面对Excel表格却无从 ...
2025-10-18数据清洗是 “数据价值挖掘的前置关卡”—— 其核心目标是 “去除噪声、修正错误、规范格式”,但前提是不破坏数据的真实业务含 ...
2025-10-17在数据汇总分析中,透视表凭借灵活的字段重组能力成为核心工具,但原始透视表仅能呈现数值结果,缺乏对数据背景、异常原因或业务 ...
2025-10-17在企业管理中,“凭经验定策略” 的传统模式正逐渐失效 —— 金融机构靠 “研究员主观判断” 选股可能错失收益,电商靠 “运营拍 ...
2025-10-17在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15