2016-09-29 14 views
6

Tôi đang tham gia một số DataFrames với nhau trong Spark và tôi tiếp tục nhận được lỗi sau:Spark 2.0.0 Lỗi: PartitioningCollection yêu cầu tất cả các partitionings của mình có numPartitions cùng

PartitioningCollection requires all of its partitionings have the same numPartitions. 

Nó dường như xảy ra sau khi tôi tham gia hai DataFrames với nhau mà mỗi dường như khá hợp lý trên của riêng mình, nhưng sau khi gia nhập họ, nếu tôi cố gắng để có được một hàng từ DataFrame tham gia, tôi nhận được lỗi này. Tôi thực sự chỉ cố gắng hiểu tại sao lỗi này có thể xuất hiện hoặc ý nghĩa đằng sau nó là gì vì tôi không thể tìm thấy bất kỳ tài liệu nào về nó.

Kết quả gọi sau trong ngoại lệ này:

val resultDataframe = dataFrame1 
    .join(dataFrame2,  
    $"first_column" === $"second_column").take(2) 

nhưng tôi chắc chắn có thể gọi

dataFrame1.take(2) 

dataFrame2.take(2) 

Tôi cũng đã cố gắng repartitioning DataFrames, sử dụng Dataset.repartition(numPartitions) hoặc Dataset.coalesce(numParitions) trên dataFrame1dataFrame2 trước khi tham gia và trên resultDataFrame sau khi tham gia, nhưng dường như không có ảnh hưởng đến lỗi. Tôi đã không thể tìm thấy tài liệu tham khảo cho các cá nhân khác nhận được lỗi sau khi một số googling cursory ...

Trả lời

8

Tôi đã gặp phải vấn đề tương tự trong vài ngày qua và tôi đã thất vọng khi tôi không tìm thấy tài liệu tham khảo trên internet . Cho đến khi bạn!

Một vài điều tôi sẽ thêm: Tôi nhận được lỗi sau một tập hợp hoạt động khá phức tạp trên các khung dữ liệu (nhiều lần tham gia). Ngoài ra, các hoạt động này liên quan đến các khung dữ liệu được tạo từ cùng một khung dữ liệu mẹ. Tôi đang cố gắng để có một ví dụ tối thiểu để tái tạo nó, nhưng nó không tầm thường để trích xuất nó từ đường ống của tôi.

Tôi nghi ngờ Spark có thể gặp khó khăn khi tính toán một kế hoạch đúng khi DAG quá phức tạp. Thật không may, có vẻ như, nếu nó là một lỗi trong Spark 2.0.0, các bản dựng hàng đêm chưa khắc phục được (tôi đã thử bản chụp 2.0.2 một vài ngày trước).

A giải pháp thực tế để khắc phục sự cố (tạm thời) có vẻ là: ghi vào đĩa (tại một số điểm) một số khung dữ liệu trong đường dẫn của bạn và đọc lại. Điều này có hiệu quả buộc Spark phải có một kế hoạch nhỏ hơn nhiều, dễ quản lý hơn để tối ưu hóa, và tốt, nó không sụp đổ nữa. Tất nhiên nó chỉ là một sửa chữa tạm thời.

+0

Cảm ơn bạn đã chứng minh sự hợp nhất và hy vọng là một giải pháp hữu ích, được thừa nhận rõ ràng.Tôi sẽ cố gắng này ra, nhưng tôi nghĩ rằng có một số khả năng rằng chúng tôi có thể có một báo cáo lỗi trên tay của chúng tôi nếu giải pháp có vẻ ra khỏi nắm bắt stackoverflow cho lâu hơn một chút. –

+0

Cũng lưu ý rằng trên phiên bản 1.6.x cùng một mã (chặn sự khác biệt rất nhỏ) hoạt động như dự định, không bị lỗi, do đó, nó có vẻ giống như một lỗi đối với tôi, quá. –

+0

Giải pháp tạm thời của bạn đã giải quyết được vấn đề! Tôi ngần ngại đánh dấu nó như là câu trả lời, nhưng trừ khi không có ai khác trả lời khác và chúng tôi quyết định đi đến JIRA tia lửa, sau đó có thể là tốt, nhưng cảm ơn. –

7

Tôi cũng gặp vấn đề tương tự. Đối với tôi nó xảy ra sau khi loại bỏ một số cột từ phần lựa chọn của một tham gia (không phải là điều khoản tham gia chính nó).

Tôi có thể sửa lỗi bằng cách gọi .repartition() trên khung dữ liệu.

+0

Cảm ơn. Đây là một sửa chữa tốt hơn so với một lần ở trên! – StackPointer

3

Bạn có gọi phương thức bộ nhớ cache không?

Sự cố này xảy ra với tôi chỉ khi tôi sử dụng phương pháp bộ nhớ cache. Nếu tôi không gọi phương thức này, tôi có thể sử dụng dữ liệu mà không gặp bất kỳ sự cố nào.

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