2014-04-22 21 views
5

Khi tôi cố gắng để tải lên một tập tin csv lớn để CKAN kho dữ liệu nó không thành công và hiển thị thông báo sauCKAN: Tải lên kho dữ liệu không thành công; Tài nguyên quá lớn để tải

Error: Resource too large to download: 5158278929 > max (10485760). 

Tôi đã thay đổi tối đa tính bằng megabyte một nguồn tải lên

ckan.max_resource_size = 5120 

in

/etc/ckan/production.ini

Tôi cần thay đổi gì để tải lên một tệp csv to ckan lớn.

Ảnh chụp màn hình: Error: Resource too large to download: 5158278929 > max (10485760)

+0

Bạn có thể cụ thể hơn về chính xác những gì bạn đã làm để thử tải tệp lên kho dữ liệu không? Ví dụ, bạn đang sử dụng datapusher ở đây? Hoặc nhà lưu trữ dữ liệu? Hay bạn có nghĩa là bạn đã cố gắng tải nó lên bộ phim? Ngoài ra, bạn đang sử dụng phiên bản CKAN nào? –

+0

Chúng tôi đang cố tải lên csv vào kho dữ liệu. Sử dụng phiên bản ckan 2.2 –

+0

@SeanHammond vui lòng xem ảnh chụp màn hình của lỗi trong câu hỏi được cập nhật .. Hãy giúp tôi tìm ra lỗi. –

Trả lời

4

Đó thông báo lỗi xuất phát từ DataPusher, không phải từ bản thân CKAN: https://github.com/ckan/datapusher/blob/master/datapusher/jobs.py#L250. Thật không may có vẻ như kích thước tệp tối đa của DataPusher được mã hóa cứng đến 10MB: https://github.com/ckan/datapusher/blob/master/datapusher/jobs.py#L28. Việc đẩy các tệp lớn hơn vào DataStore không được hỗ trợ.

Hai cách giải quyết tốt có thể là:

  1. Sử dụng DataStore API để thêm dữ liệu cho mình.

  2. Thay đổi MAX_CONTENT_LENGTH trên dòng trong mã nguồn DataPusher mà tôi đã liên kết ở trên, với thứ gì đó lớn hơn.

+0

Cảm ơn sean. Tôi đã thay đổi MAX_CONTENT_LENGTH vale thành một giá trị lớn (5 GB) sau đó lỗi sau xảy ra Lỗi: [u 'File "/usr/lib/ckan/datapusher/lib/python2.7/site-packages/apscheduler/scheduler.py" , dòng 512, trong _run_job \ n retval = job.func (* job.args, ** job.kwargs) \ n ', u' Tệp '/ usr/lib/ckan/datapusher/src/datapusher/datapusher/công việc. py ", dòng 261, trong push_to_datastore \ nf = cStringIO.StringIO (response.read()) \ n ', u' Tệp" /usr/lib/python2.7/socket.py ", dòng 358, đang đọc \ n buf.write (dữ liệu) \ n ', u "MemoryError (' hết bộ nhớ ',)"] –

+0

Máy tính của bạn (máy tính mà bạn đang chạy datapusher bật) hết bộ nhớ trong khi cố gắng tải tệp lên. Có vẻ như bộ dữ liệu lưu toàn bộ tệp trong bộ nhớ trong khi tải xuống từ CKAN và/hoặc CKAN giữ toàn bộ tệp trong bộ nhớ trong khi phân phối tệp để tải xuống. Tôi cho rằng tải xuống "streaming" có thể tránh được loại lỗi này không được hỗ trợ. Vì vậy, nếu bạn muốn đẩy một tập tin 5GB vào DataStore bằng cách sử dụng DataPusher, bạn cần nhiều hơn 5GB bộ nhớ. –

+2

Bạn vẫn có thể sử dụng API DataStore mà tôi đã liên kết trong câu trả lời ở trên để thêm tệp của bạn vào bit DataStore từng chút một, thay vì tất cả cùng một lúc. –

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