32

Có cách nào để ghép các bộ dữ liệu của hai số khác nhau RDD s trong tia lửa không?Kết hợp các tập dữ liệu của các RDD khác nhau trong tia lửa Apache bằng cách sử dụng scala

Yêu cầu là - tôi tạo hai RDD trung gian bằng cách sử dụng scala có cùng tên cột, cần phải kết hợp các kết quả này của cả RDD và lưu kết quả để truy cập vào giao diện người dùng. Làm cách nào để kết hợp các bộ dữ liệu ở đây?

RDDs là loại spark.sql.SchemaRDD

+1

Bạn không thể sử dụng '++'? – lmm

+1

@lmm No .. Nó sẽ thêm cột vào RDD. Tôi cần thêm hàng vào RDD. Tôi có hai RDD với cùng cột mà các bản ghi cần được hợp nhất vào một RDD duy nhất. – Atom

+1

Không, tôi chỉ thử nó để chắc chắn. '++' tạo ra một RDD công đoàn với các kết quả từ cả hai. – lmm

Trả lời

43

Tôi nghĩ rằng bạn đang tìm kiếm RDD.union

val rddPart1 = ??? 
val rddPart2 = ??? 
val rddAll = rddPart1.union(rddPart2) 

Ví dụ (trên Spark vỏ)

val rdd1 = sc.parallelize(Seq((1, "Aug", 30),(1, "Sep", 31),(2, "Aug", 15),(2, "Sep", 10))) 
val rdd2 = sc.parallelize(Seq((1, "Oct", 10),(1, "Nov", 12),(2, "Oct", 5),(2, "Nov", 15))) 
rdd1.union(rdd2).collect 

res0: Array[(Int, String, Int)] = Array((1,Aug,30), (1,Sep,31), (2,Aug,15), (2,Sep,10), (1,Oct,10), (1,Nov,12), (2,Oct,5), (2,Nov,15)) 
+0

rddPart1.union (rddPart2) sẽ thêm các cột của rddPart2 vào rddPart1. Tôi cần thêm hàng rddPart2 vào rddPart1. FYI, cả hai RDD trong trường hợp này có cùng tên cột và các loại – Atom

+0

Nó giống như chèn các bản ghi vào một RDD đã tồn tại. Không tạo cột mới cho RDD – Atom

+2

@example đã thêm ví dụ. Không có cột mới nào cho RDD nghiệp đoàn. – maasg

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