首页 > 解决方案 > Apache Spark 3 和向后兼容性?

问题描述

我们有几个 Spark 应用程序在使用 Spark 2.4.1 (Scala 2.11.12) 开发的生产环境中运行。对于我们的几个新 Spark 作业,我们正在考虑利用 DeltaLake 的功能。为此,我们需要使用 Spark 2.4.2(或更高版本)。

我的问题是:

  1. 如果我们将 Spark 集群升级到 3.0.0,我们的 2.4.1 应用程序是否仍然可以在新集群上运行(无需重新编译)?
  2. 如果我们需要使用 Spark 3 重新编译我们以前的 Spark 作业,它们是源兼容的还是需要任何迁移?

标签: scalaapache-sparkdelta-lake

解决方案


Spark 3.0.0 中有一些重大更改,包括源不兼容更改和二进制不兼容更改。请参阅https://spark.apache.org/releases/spark-release-3-0-0.html。而且 Scala 2.11 和 2.12 之间也存在一些源代码和二进制不兼容的变化,因此您可能还需要因为 Scala 版本变化而更新代码。

但是,只有 Delta Lake 0.7.0 及更高版本需要 Spark 3.0.0。如果升级到 Spark 3.0.0 需要大量工作,可以使用 Delta Lake 0.6.x 或更低版本。您只需在 2.4.x 行中将 Spark 升级到 2.4.2 或更高版本。它们应该是源代码和二进制兼容的。


推荐阅读