Spark 2.4.0 发布

Apache Spark 2.4.0 是 2.x 系列中的第五个版本。此版本添加了屏障执行模式,以便更好地与深度学习框架集成,引入了 30 多个内置和高阶函数,以便更轻松地处理复杂数据类型,改进了 K8s 集成,以及实验性的 Scala 2.12 支持。其他主要更新包括内置的 Avro 数据源、Image 数据源、灵活的流式接收器、消除传输期间 2GB 块大小限制以及 Pandas UDF 改进。此外,此版本继续专注于可用性、稳定性和优化,同时解决了大约 1100 个问题。

要下载 Apache Spark 2.4.0,请访问下载页面。您可以查阅 JIRA 以了解详细更改。我们在此处整理了一份高级更改列表,按主要模块分组。

Core 和 Spark SQL

  • 主要特性
    • 屏障执行模式: [SPARK-24374] 在调度器中支持屏障执行模式,以便更好地与深度学习框架集成。
    • Scala 2.12 支持: [SPARK-14220] 添加实验性的 Scala 2.12 支持。现在您可以使用 Scala 2.12 构建 Spark,并用 Scala 2.12 编写 Spark 应用程序。
    • 高阶函数: [SPARK-23899] 添加了许多新的内置函数,包括高阶函数,以便更轻松地处理复杂数据类型。
    • 内置 Avro 数据源: [SPARK-24768] 使用逻辑类型支持、更好的性能和可用性内联 Spark-Avro 包。
  • API
  • 性能和稳定性
    • [SPARK-16406] 大量列的引用解析应该更快
    • [SPARK-23486] 从外部目录缓存函数名称以用于 lookupFunctions
    • [SPARK-23803] 支持 Bucket Pruning
    • [SPARK-24802] 优化规则排除
    • [SPARK-4502] Parquet 表的嵌套模式剪枝
    • [SPARK-24296] 支持复制大于 2 GB 的块
    • [SPARK-24307] 支持从内存发送超过 2GB 的消息
    • [SPARK-23243] RDD 上的 Shuffle+Repartition 可能导致不正确的答案
    • [SPARK-25181] 限制了 BlockManager 主节点和从节点线程池的大小,降低了网络缓慢时的内存开销
  • 连接器
  • Kubernetes 调度器后端
  • PySpark
    • [SPARK-24215] 为 DataFrame API 实现 Eager Evaluation
    • [SPARK-22274] 带有 Pandas UDF 的用户定义聚合函数
    • [SPARK-22239] 带有 Pandas UDF 的用户定义窗口函数
    • [SPARK-24396] 为 Python 添加 Structured Streaming ForeachWriter
    • [SPARK-23874] 将 Apache Arrow 升级到 0.10.0
    • [SPARK-25004] 添加 spark.executor.pyspark.memory 限制
    • [SPARK-23030] 使用 Arrow 流格式创建和收集 Pandas DataFrames
    • [SPARK-24624] 支持 Python UDF 和 Scalar Pandas UDF 的混合
  • 其他值得注意的变更

编程指南:Spark RDD 编程指南Spark SQL、DataFrames 和 Datasets 指南

Structured Streaming

  • 主要特性
    • [SPARK-24565] 使用 foreachBatch (Python、Scala 和 Java) 将每个微批次的输出行公开为 DataFrame
    • [SPARK-24396] 为 foreach 和 ForeachWriter 添加了 Python API
    • [SPARK-25005] 支持 “kafka.isolation.level”,仅从使用事务生产者写入的 Kafka 主题读取已提交的记录。
  • 其他值得注意的变更
    • [SPARK-24662] 支持在 Append 或 Complete 模式下为流使用 LIMIT 运算符
    • [SPARK-24763] 从流式聚合中的值中删除冗余的键数据
    • [SPARK-24156] 当输入流中没有数据时,使用状态操作(mapGroupsWithState、流-流连接、流聚合、流 dropDuplicates)更快地生成输出结果和/或状态清理。
    • [SPARK-24730] 支持在查询中有多个输入流时选择最小或最大水印
    • [SPARK-25399] 修复了将连续处理的执行线程重用于微批处理流可能导致正确性问题的错误
    • [SPARK-18057] 将 Kafka 客户端版本从 0.10.0.1 升级到 2.0.0

编程指南:Structured Streaming 编程指南

MLlib

  • 主要特性
  • 其他值得注意的变更
    • [SPARK-22119] 将余弦距离度量添加到 KMeans/BisectingKMeans/聚类评估器
    • [SPARK-10697] 提升关联规则挖掘中的计算
    • [SPARK-14682] 为 spark.ml GBT 提供 evaluateEachIteration 方法或等效方法
    • [SPARK-7132] 将带有验证集的 fit 添加到 spark.ml GBT
    • [SPARK-15784] 将 Power Iteration Clustering 添加到 spark.ml
    • [SPARK-15064] StopWordsRemover 中的语言环境支持
    • [SPARK-21741] 基于 DataFrame 的多元汇总器的 Python API
    • [SPARK-21898] MLlib 中 KolmogorovSmirnovTest 的功能对等
    • [SPARK-10884] 支持对回归和分类相关模型的单个实例进行预测
    • [SPARK-23783] 为 ML 管道添加新的通用导出特性
    • [SPARK-11239] ML 线性回归的 PMML 导出

编程指南:机器学习库 (MLlib) 指南

SparkR

  • 主要特性
    • [SPARK-25393] 添加新函数 from_csv()
    • [SPARK-21291] 在 DataFrame 中添加 R partitionBy API
    • [SPARK-25007] 将 array_intersect/array_except/array_union/shuffle 添加到 SparkR
    • [SPARK-25234] 避免在并行化中发生整数溢出
    • [SPARK-25117] 在 R 中添加 EXCEPT ALL 和 INTERSECT ALL 支持
    • [SPARK-24537] 添加 array_remove / array_zip / map_from_arrays / array_distinct
    • [SPARK-24187] 将 array_join 函数添加到 SparkR
    • [SPARK-24331] 将 arrays_overlap、array_repeat、map_entries 添加到 SparkR
    • [SPARK-24198] 将 slice 函数添加到 SparkR
    • [SPARK-24197] 将 array_sort 函数添加到 SparkR
    • [SPARK-24185] 将 flatten 函数添加到 SparkR
    • [SPARK-24069] 添加 array_min / array_max 函数
    • [SPARK-24054] 添加 array_position 函数 / element_at 函数
    • [SPARK-23770] 在 SparkR 中添加 repartitionByRange API

编程指南:SparkR (R on Spark)

GraphX

  • 主要特性
    • [SPARK-25268] 运行并行个性化 PageRank 抛出序列化异常

编程指南:GraphX 编程指南

弃用

行为变更

  • Spark Core
    • [SPARK-25088] Rest Server 默认设置 & 文档更新
  • Spark SQL
    • [SPARK-23549] 当比较时间戳和日期时,转换为时间戳
    • [SPARK-24324] Pandas Grouped Map UDF 应该按名称分配结果列
    • [SPARK-23425] 使用通配符的 HDFS 文件路径加载数据无法正常工作
    • [SPARK-23173] from_json 可能会为标记为不可为空的字段生成 null 值
    • [SPARK-24966] 实现集合操作的优先级规则
    • [SPARK-25708] 没有 GROUP BY 的 HAVING 应该是一个全局聚合
    • [SPARK-24341] 正确处理多值 IN 子查询
    • [SPARK-19724] 使用已存在的默认位置创建托管表应该抛出一个异常

请阅读迁移指南,了解所有行为更改

已知问题

  • [SPARK-25271] 使用 Hive parquet 表的 CTAS 应该利用原生 parquet 源
  • [SPARK-24935] 从 Spark 2.2 开始执行 Hive UDAF 出现问题
  • [SPARK-25879] 当选择嵌套字段和顶层字段时,Schema 剪枝失败
  • [SPARK-25906] spark-shell 无法正确处理 -i 选项
  • [SPARK-25921] Python worker 重用导致 Barrier 任务在没有 BarrierTaskContext 的情况下运行
  • [SPARK-25918] LOAD DATA LOCAL INPATH 应该处理相对路径

贡献者

最后但同样重要的是,如果没有以下贡献者,这个版本是不可能完成的:Achuth17, Adam Bradbury, Adamyuanyuan, Adelbert Chang, Ala Luszczak, Aleksandr Koriagin, Alessandro Bellina, Alessandro Solimando, Andrew Korzhuev, Anton Okolnychyi, Antonio Murgia, Arseniy Tashoyan, Artem Rudoy, Arun Mahadevan, Asher Saban, Bago Amirbekian, Benjamin Peterson, Bo Meng, Bogdan Raducanu, Bounkong Khamphousone, Brandon Krieger, Brian Lindblom, Bruce Robbins, Bryan Cutler, Cheng Lian, Chongguang LIU, Chris Horn, Chris Martin, Cody Koeninger, DB Tsai, Daniel Sakuma, Daniel Van Der Ende, Darcy Shen, David Vogelbacher, Devaraj K, Dhruve Ashar, Dilip Biswal, Dongjoon Hyun, DylanGuedes, Efim Poberezkin, Eric Chang, Eric Liang, Erik Erlandson, Eyal Farago, Fangshi Li, Felix Cheung, Feng Liu, Fernando Pereira, Florent Pepin, Fokko Driesprong, Gabor Somogyi, Gengliang Wang, Ger Van Rossum, Gera Shegalov, Goun Na, Hao Ren, Henry Robinson, Herman Van Hovell, Hieu Huynh, Holden Karau, Huang Tengfei, Huaxin Gao, Hyukjin Kwon, Ilan Filonenko, Imran Rashid, Jacek Laskowski, Jake Charland, James Thompson, James Yu, Jaroslav Chladek, Jeff Zhang, JiahuiJiang, Jim Kleckner, Joey Krabacher, John Zhuge, Jongyoul Lee, Jooseong Kim, Jose Torres, Joseph Bradley, Joseph K. Bradley, Josh Rosen, Julien Cuquemelle, Juliusz Sompolski, Jungtaek Lim, KaiXinXIaoLei, Kallman, Steven, Karthik Palaniappan, Kaya Kupferschmidt, Kazuaki Ishizaki, Kelley Robinson, Kent Yao, Kevin Yu, KevinZwx, Koert Kuipers, Kousuke Saruta, Kris Mok, LantaoJin, Lee Dongjin, Lemonjing, Li Jin, Liang-Chi Hsieh, Lu WANG, LucaCanali, Marcelo Vanzin, Marco Gaido, Marek Novotny, Mario Molina, Mark Petruska, Maryann Xue, Mathieu St-Louis, Matthew Cheah, Matthew Tovbin, Mauro Palsgraaf, Maxim Gekk, Michael (Stu) Stewart, Michael Allman, Michael Chirico, Michael Mior, Michal Switakowski, Mihaly Toth, Miklos C, Miles Yucht, Misha Dmitriev, Mukul Murthy, Mykhailo Shtelma, Neal Song, Ngone51, Nihar Sheth, Nolan Emirot, Norman Maurer, Onur Satici, Patrick McGloin, Patrick Pisciuneri, Paul Mackles, Peter Toth, Prashant Sharma, Rao Fu, Ray Burgemeestre, Rekha Joshi, Reynold Xin, Reza Safi, Ricardo Martinelli De Oliveira, Rob Vesse, Robert Kruszewski, Rong Tang, Ryan Blue, Sahil Takiar, Saisai Shao, Sandeep Singh, Sandor Murakozi, Sanket Chintapalli, Santiago Saavedra, Sean Owen, Sean Suchter, Sebastian Arzt, Shane Knapp, Shixiong Zhu, Soham Aurangabadkar, Stacy Kerkela, Stan Zhai, Stavros Kontopoulos, Steve Loughran, Sunitha Kambhampati, Takeshi Yamamuro, Takuya UESHIN, Tathagata Das, Ted Yu, Teng Peng, Thiruvasakan Paramasivan, Thomas Graves, Tom Saleeba, Vayda, Oleksandr: IT (PRG), Vinod KC, Vladimir Kuriatkov, Wang Gengliang, Weichen Xu, Wenbo Zhao, Wenchen Fan, William Sheu, XD-DENG, Xiangrui Meng, Xianjin YE, Xianyang Liu, Xiao Li, Xiaogang Tu, Xiayun Sun, Xingbo Jiang, Yacine Mazari, Yash Sharma, Ye Zhou, Yinan Li, Yogesh Garg, Yuanbo Liu, Yuanjian Li, Yuchen Huo, Yuexin Zhang, Yuming Wang, Yuval Itzchakov, Zhan Zhang, Zhang Le, Zheng RuiFeng, Zoltan C. Toth


Spark 新闻存档

最新消息

存档