sự khác biệt giữa tham gia và cogroup trong Apache Spark? Và khi nào thì sử dụng chúng là gì là gìsự khác biệt giữa tham gia và cogroup trong Apache Spark
Trả lời
Hãy để tôi giúp bạn làm rõ họ, cả hai đều chung để sử dụng và quan trọng!
def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]
Đây là prototype
của tham gia, xin vui lòng cẩn thận nhìn vào nó. Ví dụ,
val rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)
val rdd2 = sc.makeRDD(Array(("A","a"),("C","c"),("D","d")),2)
scala> rdd1.join(rdd2).collect
res0: Array[(String, (String, String))] = Array((A,(1,a)), (C,(3,c)))
Tất cả các phím sẽ xuất hiện trong kết quả cuối cùng ta thường rdd1 và rdd2. Điều này tương tự như relation database operation INNER JOIN
.
Nhưng cogroup là khác nhau,
def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))]
như một chìa khóa ít nhất xuất hiện trong một trong hai rdds, nó sẽ xuất hiện trong kết quả cuối cùng, hãy để tôi làm rõ điều này:
val rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)
val rdd2 = sc.makeRDD(Array(("A","a"),("C","c"),("D","d")),2)
scala> var rdd3 = rdd1.cogroup(rdd2).collect
res0: Array[(String, (Iterable[String], Iterable[String]))] = Array(
(B,(CompactBuffer(2),CompactBuffer())),
(D,(CompactBuffer(),CompactBuffer(d))),
(A,(CompactBuffer(1),CompactBuffer(a))),
(C,(CompactBuffer(3),CompactBuffer(c)))
)
Điều này là rất similar
đến relation database operation FULL OUTER JOIN
, nhưng thay vì làm phẳng kết quả trên mỗi dòng cho mỗi bản ghi, nó sẽ cung cấp cho bạn interable interface
cho bạn, hoạt động sau đây là tùy thuộc vào bạn thuận tiện!
Chúc may mắn!
docs Spark là: http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.rdd.PairRDDFunctions
- 1. Tham gia vs COGROUP trong PIG
- 2. Sự khác biệt giữa Apache Mahout và MLlib của Apache Spark là gì?
- 3. Sự khác biệt giữa việc tham gia trái và tham gia bên ngoài bên trái
- 4. Sự khác biệt giữa == và === trong scala, spark
- 5. Sự khác biệt giữa Tham gia bên trong & Tham gia đầy đủ
- 6. khác biệt giữa cần tây có được và tham gia
- 7. sự khác biệt giữa apache/nginx/IIS
- 8. Sự khác biệt giữa "sử dụng" và "trên" trong bảng tham gia trong MysQL là gì?
- 9. Apache Spark và Apache Storm
- 10. Sự khác biệt giữa Apache Deft, Webbit và Vert.x
- 11. Sự khác biệt giữa + và & để tham gia chuỗi trong VB.NET
- 12. sự khác biệt giữa dấu phẩy và tham gia trong sql
- 13. sự khác biệt giữa apache Ambari Server và Agent
- 14. Sự khác nhau giữa Apache Spark và Apache Flink là gì?
- 15. sự khác biệt giữa tham gia bên trái và tham gia bên ngoài bên trái là gì?
- 16. Ví dụ về Apache Spark Tham gia với Java
- 17. Sự khác biệt giữa khóa được đồng bộ hóa và tham gia lại?
- 18. Sự khác biệt giữa Ngã ba/Tham gia và Bản đồ/Giảm
- 19. Sự khác nhau giữa na(). Thả() và bộ lọc (col.isNotNull) (Apache Spark)
- 20. Sự khác biệt giữa Lucene và Elasticsearch
- 21. Sự khác biệt giữa glTexParameter và glSamplerParameter
- 22. Sự khác biệt giữa. và #
- 23. Sự khác nhau giữa "và" và "ở đâu" trong tham gia
- 24. Sự khác biệt giữa "tham số" và "localparam"
- 25. Sự khác biệt giữa $ VARIABLE và $ {VARIABLE}
- 26. Sự khác biệt giữa $ (...) và `...`
- 27. Sự khác nhau giữa tham gia vòng lặp lồng nhau và tham gia băm trong SQL Server 2008
- 28. Sự khác biệt giữa = và: =
- 29. Sự khác biệt giữa $ * và $ @
- 30. Sự khác biệt giữa Máy chủ HTTP Apache và Apache Tomcat?
Làm thế nào để sử dụng 'cogroup' cho các tập dữ liệu lớn như khi tôi sử dụng' thu thập() 'nó ném ra khỏi memory exception 'rdd1 = rdd2.cogroup (rdd3) .collect'. Bạn có thể giúp về vấn đề này không [https://stackoverflow.com/questions/47180307/how-to-use-cogroup-for-large-datasets].Cảm ơn bạn – Vignesh
@Vignesh, vui lòng sử dụng phương thức lấy thay vì thu thập. – ashburshui
yh, thử với 'take, top' bạn có biết cách phân vùng lại mã sau đây không? – Vignesh