2017-05-10 20 views
6

Tôi đang xây dựng ứng dụng tia lửa đầu tiên của mình.Khả năng tương thích phiên bản Scala/Spark

http://spark.apache.org/downloads.html cho tôi biết rằng Spark 2.x được xây dựng dựa trên Scala 2.11.

Trên trang web Scala https://www.scala-lang.org/download/all.html tôi nhìn thấy các phiên bản từ 2.11.0 - 2.11.11

Vì vậy, đây là câu hỏi của tôi: những gì chính xác hiện 2.11 trên trang web Spark có ý nghĩa. Có bất kỳ phiên bản Scala nào trong phạm vi 2.11.0 - 2.11.11 không?

Một câu hỏi khác: Tôi có thể tạo ứng dụng Spark của mình bằng Scala 2.12.2 mới nhất không? Tôi cho rằng Scala tương thích ngược, vì vậy các thư viện Spark được xây dựng với Scala nói 2.11.x có thể được sử dụng/gọi trong các ứng dụng Scala 2.12.1. Tôi có đúng không?

Trả lời

14

Scala không tương thích ngược, như bạn giả định. Bạn phải sử dụng scala 2.11 với tia lửa trừ khi bạn xây dựng lại tia lửa dưới scala 2.12 (đây là một tùy chọn nếu bạn muốn sử dụng phiên bản Scala mới nhất, nhưng yêu cầu nhiều công việc hơn để làm mọi thứ hoạt động).

Khi xem xét khả năng tương thích, bạn cần cân nhắc cả tính tương thích nguồn và khả năng tương thích nhị phân. Scala không có xu hướng tương thích ngược, vì vậy bạn có thể xây dựng lại jar của mình theo một phiên bản mới hơn, nhưng nó không tương thích ngược, vì vậy bạn không thể sử dụng một lọ được xây dựng với phiên bản cũ có mã từ phiên bản mới.

Đây chỉ là phiên bản chính, vì vậy scala 2.10, 2.11, 2.12 vv là tất cả các phiên bản chính và không tương thích nhị phân (ngay cả khi chúng là nguồn tương thích). Trong phiên bản chính mặc dù tính tương thích được duy trì, vì vậy Scala 2.11 tương thích với tất cả các phiên bản 2.11.0 - 2.11.11 (cộng với mọi bản sửa đổi 2.11 tương lai cũng sẽ tương thích)

Vì lý do này bạn sẽ thấy hầu hết các thư viện Scala có các bản phát hành riêng biệt cho mỗi phiên bản Scala chính. Bạn phải đảm bảo rằng bất kỳ thư viện nào bạn sử dụng đều cung cấp một cái lọ cho phiên bản bạn đang sử dụng và bạn sử dụng cái bình đó chứ không phải một cái cho phiên bản khác. Nếu bạn sử dụng SBT %% sẽ xử lý việc chọn đúng phiên bản cho bạn nhưng với maven bạn cần phải đảm bảo sử dụng tên tạo tác chính xác. Các phiên bản thường được thêm vào trước với _2.10, _2.11 và _2.12 đề cập đến phiên bản scala mà jar được tạo cho.

+0

Tôi muốn sử dụng ít nhất Spark 2.0, vì đó là phiên bản đầu tiên có khả năng lưu và tải mô hình tôi cần. Vậy phiên bản Scala nào tôi cần và nơi này có thể được tìm kiếm? –

+0

@PaulReiners Phiên bản mới nhất 2.1.1 được phân phối cho Scala 2.11. Nếu bạn muốn Scala 2.12 bạn có thể xây dựng tia lửa từ nguồn cho phiên bản Scala đó. Trang chủ tia lửa đề cập đến phiên bản Scala cho bản phát hành mới nhất ở một vài nơi nhưng tôi chưa thấy bất kỳ bảng tương thích chính thức nào. Bạn có thể tất nhiên chỉ cần nhìn vào tên gói mặc dù theo quy ước tiêu chuẩn của việc bổ sung phiên bản Scala mà chúng tương thích với id tạo tác. – puhlen

Các vấn đề liên quan