2016-09-02 14 views
6

Tôi làm việc với Spark thường xuyên, và nó sẽ tiết kiệm cho tôi rất nhiều thời gian nếu trình biên dịch có thể đảm bảo rằng một loại có thể tuần tự hóa.Có cách nào để đảm bảo loại có thể tuần tự hóa tại thời gian biên dịch

Có thể với một lớp loại?

def foo[T: IsSerializable](t: T) = { 
    // do stuff requiring T to be serializable 
} 

Không đủ để hạn chế T <: Có thể tuần tự hóa. Nó vẫn có thể thất bại trong thời gian chạy. Bài kiểm tra đơn vị là một sự thay thế tốt, nhưng bạn vẫn có thể quên chúng, đặc biệt khi làm việc với các đội lớn.

Tôi nghĩ rằng điều này có thể không thể thực hiện tại thời gian biên dịch mà không có các loại được niêm phong.

+0

Câu hỏi phụ: Là T <: Có thể lập lại chỉ một thời gian đảm bảo biên dịch không? – Samar

+0

Bạn có thể xây dựng? Có, nó là một ràng buộc kiểm tra tại thời gian biên dịch. – Upio

+0

Nhưng, điểm của việc có một hệ thống kiểu mạnh mẽ là gì nếu nó không cung cấp bảo đảm thời gian chạy? – Samar

Trả lời

4

Có, có thể, nhưng không theo cách bạn đang hy vọng. lớp kiểu của bạn IsSerializable có thể cung cấp một cơ chế để chuyển đổi T của bạn đến một giá trị của một loại mà đảm bảo được Serializable và ngược lại,

trait IsSerializable[T] { 
    def toSerializable(t: T): String 
    def fromSerializable(s: String): Option[T] 
} 

Nhưng, tất nhiên, điều này chỉ là một lớp kiểu thay thế dựa cơ chế tuần tự hóa trong quyền riêng của nó, làm cho việc sử dụng serialization JVM không cần thiết.

Khóa học hành động tốt nhất của bạn sẽ là vận động hành lang Spark để hỗ trợ trực tiếp dựa trên chuỗi lớp học trực tiếp.

+0

Cảm ơn bạn đã phản ứng, nhưng bạn nói đúng, đây không phải là những gì tôi đã hy vọng cho :) Nếu tia lửa di chuyển xa Java serialization, làm thế nào nó sẽ serialize đóng cửa? Giải quyết việc tuần tự hóa các đối tượng dữ liệu với các lớp kiểu là đủ đơn giản, nhưng logic tính toán dường như không thể. Đó là một sự xấu hổ bởi vì hầu hết các ứng dụng Spark bị thủng với lazies và cách giải quyết khác để gotchas serialization. – Upio

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