Tôi có một bộ dữ liệu lớn mà tôi cần chia thành các nhóm theo các thông số cụ thể. Tôi muốn công việc xử lý hiệu quả nhất có thể. Tôi có thể hình dung hai cách làm như vậy
Tùy chọn 1 - Tạo bản đồ từ RDD ban đầu và bộ lọc
def customMapper(record):
if passesSomeTest(record):
return (1,record)
else:
return (0,record)
mappedRdd = rddIn.map(lambda x: customMapper(x))
rdd0 = mappedRdd.filter(lambda x: x[0]==0).cache()
rdd1 = mappedRdd.filter(lambda x: x[1]==1).cache()
Tùy chọn 2 - Lọc trực tiếp RDD gốc
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
Phương pháp nắm tay phải lặp đi lặp lại trên tất cả các bản ghi của dữ liệu gốc được đặt 3 lần, trong đó lần thứ hai chỉ phải thực hiện hai lần, trong trường hợp bình thường, tuy nhiên, tia lửa tạo ra một số hình ảnh phía sau cảnh, vì vậy tôi có thể tưởng tượng rằng chúng là thực hiện hiệu quả theo cách tương tự. Câu hỏi của tôi là: a.) Là một phương pháp hiệu quả hơn phương pháp kia, hay việc xây dựng biểu đồ tia lửa làm cho chúng tương đương b.) Có thể thực hiện việc phân tách này trong một lần duy nhất