2017-05-10 4 views
6

Ich baue meine erste Funkenanwendung.Scala/Spark Versionskompatibilität

http://spark.apache.org/downloads.html sagt mir, dass Spark 2.x gegen Scala 2.11 gebaut wird.

Auf der Scala Website https://www.scala-lang.org/download/all.html ich die Versionen von 2.11.0 bin zu sehen - 2.11.11

So, hier ist meine Frage: Was genau macht die 2.11 auf der Spark-Website bedeuten. Ist es irgendeine Scala-Version im Bereich 2.11.0 - 2.11.11?

Eine andere Frage: Kann ich meine Spark-Apps mit der neuesten Scala 2.12.2 erstellen? Ich gehe davon aus, dass Scala abwärtskompatibel ist, daher können Spark-Bibliotheken, die mit Scala 2.11.x erstellt wurden, in Scala 2.12.1-Anwendungen verwendet/aufgerufen werden. Hab ich recht?

Antwort

14

Scala ist nicht abwärtskompatibel, wie Sie vermuten. Sie müssen scala 2.11 mit spark verwenden, es sei denn, Sie erstellen spark unter scala 2.12 (das ist eine Option, wenn Sie die neueste Scala-Version verwenden möchten, aber mehr Arbeit benötigt, um alles zum Laufen zu bringen).

Wenn Sie die Kompatibilität in Betracht ziehen, müssen Sie sowohl die Quellkompatibilität als auch die Binärkompatibilität berücksichtigen. Scala neigt dazu, rückwärtskompatibel zu sein, so dass Sie Ihr jar unter einer neueren Version neu erstellen können, aber es ist nicht binär abwärtskompatibel, so dass Sie kein jar verwenden können, das mit einer alten Version mit Code aus einer neuen Version erstellt wurde.

Dies sind nur Hauptversionen, daher sind scala 2.10, 2.11, 2.12 usw. alle Hauptversionen und nicht binärkompatibel (auch wenn sie quellkompatibel sind). Innerhalb einer Hauptversion obwohl Kompatibilität beibehalten wird, so Scala 2.11 ist kompatibel mit allen Versionen 2.11.0 - 2.11.11 (plus zukünftige 2.11 Änderungen werden auch kompatibel sein)

Es ist aus diesem Grund, dass Sie sehen Die meisten Scala-Bibliotheken haben separate Versionen für jede größere Scala-Version. Sie müssen sicherstellen, dass jede von Ihnen verwendete Bibliothek eine JAR-Datei für die von Ihnen verwendete Version bereitstellt und dass Sie diese JAR-Datei und nicht eine JAR-Datei für eine andere Version verwenden. Wenn Sie SBT verwenden, behandelt %% die richtige Version für Sie, aber mit maven müssen Sie sicherstellen, dass Sie den korrekten Artefaktnamen verwenden. Die Versionen werden typischerweise mit _2.10, _2.11 und _2.12 vorangestellt, die sich auf die scala-Version beziehen, für die das jar erstellt wurde.

+0

Ich möchte mindestens Spark 2.0 verwenden, da das ist die erste Version, die die Modell speichern und laden Fähigkeit ich brauche. Also, welche Version von Scala brauche ich und wo kann das nachgeschlagen werden? –

+0

@PaulReiners Die neueste Version 2.1.1 ist für Scala 2.11 erhältlich. Wenn Sie Scala 2.12 wollen, können Sie Funken aus der Quelle für diese Scala-Version erstellen. Die spark Homepage erwähnt die Scala Version für die neueste Version an einigen Stellen, aber ich habe keine offizielle Kompatibilitätstabelle gesehen. Sie können natürlich nur die Paketnamen betrachten, die der Standardkonvention des Anhängens der Scala-Version, mit der sie kompatibel sind, an die Artefakt-ID folgen. – puhlen

Verwandte Themen