Tôi có một số lượng lớn các khung dữ liệu trong R mà tôi dự định lưu trữ bằng cách sử dụng redis. Tôi hoàn toàn mới với redis nhưng đã được đọc về nó ngày hôm nay và đã được sử dụng gói R rredis
.Lưu trữ các khung dữ liệu lớn màu đỏ thông qua R
Tôi đã phát xung quanh với dữ liệu nhỏ và đã lưu và truy xuất các khung dữ liệu nhỏ sử dụng các chức năng redisSet()
và redisGet()
. Tuy nhiên khi nói đến tiết kiệm dataframes lớn của tôi (lớn nhất trong số đó là 4,3 triệu hàng và 365MB khi lưu lại dưới dạng tập tin .RData) sử dụng mã redisSet('bigDF', bigDF)
tôi nhận được thông báo lỗi sau:
Error in doTryCatch(return(expr), name, parentenv, handler) :
ERR Protocol error: invalid bulk length
In addition: Warning messages:
1: In writeBin(v, con) : problem writing to connection
2: In writeBin(.raw("\r\n"), con) : problem writing to connection
Có lẽ vì dataframe quá lớn để tiết kiệm. Tôi biết rằng redisSet viết dataframe như một chuỗi, có lẽ không phải là cách tốt nhất để làm điều đó với các khung dữ liệu lớn. Có ai biết cách tốt nhất để làm điều này?
EDIT: Tôi đã tái tạo các lỗi khi tạo của tôi một dataframe giả rất lớn:
bigDF <- data.frame(
'lots' = rep('lots',40000000),
'of' = rep('of',40000000),
'data' = rep('data',40000000),
'here'=rep('here',40000000)
)
Chạy redisSet('bigDF',bigDF)
mang lại cho tôi những lỗi:
Error in .redisError("Invalid agrument") : Invalid agrument
lần đầu tiên, sau đó chạy nó một lần nữa ngay sau đó Tôi gặp lỗi
Error in doTryCatch(return(expr), name, parentenv, handler) :
ERR Protocol error: invalid bulk length
In addition: Warning messages:
1: In writeBin(v, con) : problem writing to connection
2: In writeBin(.raw("\r\n"), con) : problem writing to connection
Cảm ơn
Chia sẻ mã thực tế bạn đang sử dụng trong khối mã được định dạng. Điều này sẽ giúp người nào đó có kinh nghiệm chẩn đoán và đề xuất điều chỉnh dễ dàng hơn nhiều. –