InfoQSpark 3.0开发近两年终于发布,流、Python、SQL重大更新详解

昨天 , 开发历时近两年的 Apache Spark 3.0.0 正式发布了!3.0.0 版本一共包含了 3400 多个补丁 , 是开源社区有史以来贡献力度最大的一次 , 新版本加入了 Python 和 SQL 的高级功能 , 提升了探索和生产应用方面的易用性 。 今年 , Spark 也迎来了开源 10 周年 , 这 10 年里 Spark 一直在不断发展 , 以便满足更多的应用场景和更广泛的受众需求 。Spark 3.0 主要特性概览

  • 相比 Spark 2.4 , 性能提升了 2 倍 , 主要体现在自适应查询执行、动态分区修剪等方面;
  • 兼容 ANSI SQL;
  • Pandas API 的重大改进 , 包括 Python 类型提示和增加额外的 Pandas UDF;
  • 改进了 Python 错误处理 , 简化了 PySpark 异常;
  • 结构化流的新 UI;
  • 调用 R 语言 UDF 速度提升最高达到了 40 倍;
  • 解决了 3400 个 Jira 问题 , 这些问题在 Spark 各个组件的分布情况如下:

InfoQSpark 3.0开发近两年终于发布,流、Python、SQL重大更新详解
本文插图
Spark 开源 10 周年 Spark 诞生于加州大学伯克利分校的 AMPLab 实验室 , 该实验室致力于数据密集型计算的研究 。 AMPLab 研究人员与大型互联网公司合作 , 研究如何解决数据和 AI 问题 , 然后发现那些拥有海量数据的公司也面临同样的问题 。 于是 , 他们开发了一个新引擎来处理这些新兴的工作负载 , 同时又能够让开发人员轻松地使用大数据处理 API 。
很快 , 社区开始参与贡献 , 对 Spark 进行了扩展 , 在流、Python 和 SQL 方面带来了新功能 , 而这些模式现在已经是 Spark 的主要用例 。 持续的投入把 Spark 带到了今天的状态 , 成为数据处理、数据科学、机器学习和数据分析工作负载事实上的引擎 。 Apache Spark 3.0 通过显著改善对 SQL 和 Python(当今 Spark 使用的两种最广泛的语言)的支持和对性能、可操作性等方面的优化继续推进这种趋势 。
改进的 Spark SQL 引擎 Spark SQL 是支持大多数 Spark 应用程序的引擎 。 例如 , 在 Databricks , 超过 90%的 Spark API 调用使用了 DataFrame、Dataset 和 SQL API 。 这说明即使是 Python 和 Scala 开发人员 , 他们的大部分工作都通过 Spark SQL 引擎进行 。 Spark 3.0 有 46%的补丁与 SQL 有关 , 提升了性能和 ANSI SQL 兼容性 。 如下图所示 , Spark 3.0 的总体性能大约是 Spark 2.4 的 2 倍 。 接下来将介绍 Spark SQL 引擎的新功能 。
InfoQSpark 3.0开发近两年终于发布,流、Python、SQL重大更新详解
本文插图
【InfoQSpark 3.0开发近两年终于发布,流、Python、SQL重大更新详解】
新的自适应查询执行(AQE)框架通过在运行时生成更好的执行计划来提升性能 , 即使初始的计划不理想(由于缺少或使用了不正确的数据统计信息和错误地估算了成本) 。 由于 Spark 的数据存储和计算是分离的 , 因此数据的到达是无法预测的 。 基于这些原因 , 对于 Spark 来说 , 运行时自适应比传统系统来得更为重要 。 新版本引入了三个主要的自适应优化: