Tôi có một cụm RMI. Mỗi máy chủ RMI có một bối cảnh Spark. Có cách nào để chia sẻ RDD giữa các bối cảnh Spark khác nhau không?Làm thế nào để chia sẻ Spark RDD giữa 2 bối cảnh Spark?
Trả lời
Không, RDD được gắn với một đơn SparkContext
. Ý tưởng chung là bạn có một cụm Spark và một chương trình điều khiển cho biết cụm phải làm gì. Trình điều khiển này sẽ có SparkContext
và khởi động các hoạt động trên RDD.
Nếu bạn muốn chuyển RDD từ chương trình trình điều khiển này sang chương trình khác, giải pháp là ghi nó vào đĩa (S3/HDFS/...) trong trình điều khiển đầu tiên và tải nó từ đĩa trong trình điều khiển khác.
Như đã được Daniel Darabos nêu rõ, điều đó là không thể. Mỗi đối tượng phân tán trong Spark được bao hàm theo ngữ cảnh cụ thể đã được sử dụng để tạo ra nó (SparkContext
trong trường hợp RDD, SQLContext
trong trường hợp DataFrame
tập dữ liệu). Nếu bạn muốn chia sẻ các đối tượng giữa các ứng dụng, bạn phải sử dụng các ngữ cảnh được chia sẻ (xem ví dụ spark-jobserver
, Livy hoặc Apache Zeppelin). Kể từ RDD
hoặc DataFrame
chỉ là một đối tượng địa phương nhỏ có thực sự không có nhiều để chia sẻ.
Dữ liệu chia sẻ là một vấn đề hoàn toàn khác. Bạn có thể sử dụng bộ nhớ đệm chuyên dụng (Apache Ignite) hoặc phân phối trong các hệ thống tệp bộ nhớ (như Alluxio - cựu Tachyon) để giảm thiểu độ trễ khi chuyển đổi giữa ứng dụng nhưng bạn thực sự không thể tránh được.
Bạn không thể tự nhiên, theo hiểu biết của tôi, RDD không phải là dữ liệu, mà là một cách để tạo dữ liệu thông qua biến đổi/bộ lọc từ dữ liệu gốc.
Một ý tưởng khác, là chia sẻ dữ liệu cuối cùng thay thế. Vì vậy, bạn sẽ lưu trữ các RDD trong một dữ liệu lưu trữ, chẳng hạn như: - HDFS (một file gỗ vv ..) - Elasticsearch - Apache Ignite (trong bộ nhớ)
Tôi nghĩ rằng bạn sẽ yêu Apache Ignite : https://ignite.apache.org/features/igniterdd.html
Apache Ignite cung cấp một thực hiện Spark RDD trừu tượng cho phép dễ dàng chia sẻ trạng thái trong bộ nhớ trên nhiều Spark việc làm, hoặc trong cùng một ứng dụng hoặc giữa Spark khác nhau ứng dụng.
IgniteRDD được triển khai dưới dạng chế độ xem qua bộ nhớ cache được phân phối, có thể được triển khai trong quy trình thực hiện công việc Spark, hoặc trên nhân viên Spark hoặc trong cụm của riêng nó.
(Tôi cho phép bạn tìm tài liệu để tìm thấy những gì bạn đang tìm kiếm.)
- 1. Apache Spark RDD Split "|"
- 2. viết một RDD vào HDFS trong một bối cảnh spark-streaming
- 3. Spark: RDD vào danh sách
- 4. Spark: Làm thế nào để kết hợp một danh sách <RDD> để RDD
- 5. Spark quyết định cách phân vùng RDD như thế nào?
- 6. Apache Spark: Làm cách nào để chuyển đổi một khung dữ liệu Spark thành RDD với loại RDD [(Type1, Type2, ...)]?
- 7. Làm cách nào để thêm cột mới vào Spark RDD?
- 8. Làm thế nào để vượt qua bối cảnh mùa xuân để nút công nhân Spark
- 9. Spark - scala: trộn RDD/chia RDD thành hai phần ngẫu nhiên ngẫu nhiên
- 10. Spark nhiều ngữ cảnh
- 11. Spark Caching: RDD Chỉ có 8% cache
- 12. Spark: Tạo RDD từ dịch vụ REST
- 13. lỗi spark RDD không tìm thấy khi tạo RDD
- 14. Spark/Scala: Chuyển RDD đến Function
- 15. Lặp lại thông qua Spark RDD
- 16. Apache Spark vs Apache Spark 2
- 17. Làm thế nào để chuyển đổi ma trận thành RDD [Vector] trong spark
- 18. Làm thế nào để kiểm tra xem Spark RDD có trong bộ nhớ không?
- 19. Làm thế nào để nhận được hàng thứ n của Spark RDD?
- 20. Spark: nhóm concat tương đương trong scala RDD
- 21. Spark MLlib - cảnh báo trainImplicit
- 22. Làm thế nào để chạy các công việc đồng thời (hành động) trong Apache Spark sử dụng bối cảnh spark đơn
- 23. spark-scala: Lọc RDD nếu hồ sơ của RDD không tồn tại trong một RDD
- 24. Sửa đổi bộ sưu tập bên trong Spark RDD foreach
- 25. SQL Spark: Chuyển đổi RDD [GenericData.Record] để DataFrame
- 26. Để Spark hoặc không Spark?
- 27. Số phân vùng trong RDD và hiệu suất trong Spark
- 28. spark.sql.crossJoin.enabled cho Spark 2.x
- 29. Sắp xếp theo giá trị trong cặp spark RDD
- 30. Spark RDD - Ánh xạ với các đối số thừa