Tôi đang cố gắng để gọi hàm reduceByKey của pyspark trên dữ liệu của các định dạng (([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...
Một danh sách như một chìa khóa cho reduceByKey PySpark của
Dường pyspark sẽ không chấp nhận một mảng như là chìa khóa trong khóa bình thường, giảm giá trị bằng cách đơn giản áp dụng .reduceByKey (thêm).
Trước tiên, tôi đã thử chuyển đổi mảng thành chuỗi, bằng cách .map((x,y): (str(x),y))
nhưng điều này không hoạt động do xử lý bài của chuỗi trở lại thành mảng quá chậm.
Có cách nào tôi có thể làm cho pyspark sử dụng mảng làm khóa hoặc sử dụng chức năng khác để nhanh chóng chuyển đổi chuỗi trở lại mảng không?
đây là mã lỗi liên quan đến
File "/home/jan/Documents/spark-1.4.0/python/lib/pyspark.zip/pyspark/shuffle.py", line 268, in mergeValues
d[k] = comb(d[k], v) if k in d else creator(v)
TypeError: unhashable type: 'list'
enter code here
TÓM TẮT:
đầu vào: x =[([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...]
đầu ra mong muốn: y =[([a,b,c], 2), ([a,d,b,e], 1),...]
như vậy mà tôi có thể truy cập vào a
bởi y[0][0][0]
và 2
bởi y[0][1]
cảm ơn điều đó thực sự giúp ích rất nhiều cho sự hiểu biết của tôi về tia lửa nói chung –
Bạn được chào đón. BTW Nó không phải là Spark cụ thể cụ thể. Điều tương tự cũng áp dụng khi bạn sử dụng Python đơn giản 'dicts' hoặc' sets'. – zero323