首页 文章

为什么我不能在DB中写入数据帧?

提问于
浏览
1

我有32 GB的RAM,我使用jupyter和pandas . 我的数据帧不是很大,但是当我想在北极数据库中写它时,我有“MemoryError”:

df_q.shape
(157293660, 10)
def memory(df):
    mem = df.memory_usage(index=True).sum() / (1024 ** 3)
    print(mem)
memory(df_q)
12.8912200034

我想写一下:

from arctic import Arctic
import arctic as arc
store = Arctic('.....')
lib = store['myLib']
lib.write('quotes', df_q)

MemoryError Traceback(最近一次调用last)in()1 memory(df_q)----> 2 lib.write('quotes',df_q)/usr/local/lib/python2.7/dist-packages/arctic/ f_retry中的decorators.pyc(* args,** kwargs)48而True:49尝试:---> 50返回f(* args,** kwargs)51除了(DuplicateKeyError,ServerSelectionTimeoutError)为e:52#Re-raise错误不会消失 . 写入/usr/local/lib/python2.7/dist-packages/arctic/store/version_store.pyc(self,symbol,data,metadata,prune_previous_version,** kwargs)561 562 handler = self._write_handler(version,symbol ,data,** kwargs) - > 563 mongo_retry(handler.write)(self._arctic_lib,version,symbol,data,previous_version,** kwargs)564 565#将新版本插入DB / usr / local /版本lib / python2.7 / dist-packages / arctic / decorators.pyc in f_retry(* args,** kwargs)48 while True:49 try:---> 50 return f(* args,** kwargs)51除外( DuplicateKeyError,ServerSelectionTimeoutError)as e:52#重新引发不会消失的错误 . 写入/usr/local/lib/python2.7/dist-packages/arctic/store/_pandas_ndarray_store.pyc(self,arctic_lib,version,symbol,item,previous_version)301 def write(self,arctic_lib,version,symbol,item ,previous_version):302项,md = self.to_records(item) - > 303 super(PandasDataFrameStore,self).write(arctic_lib,version,symbol,item,previous_version,dtype = md)304 305 def append(self,arctic_lib) ,version,symbol,item,previous_version):写入/usr/local/lib/python2.7/dist-packages/arctic/store/_ndarray_store.pyc(self,arctic_lib,version,symbol,item,previous_version,dtype)385 version ['type'] = self.TYPE 386 version ['up_to'] = len(item) - > 387 version ['sha'] = self.checksum(item)388 389 if previous_version:/ usr / local / lib校验和中的/python2.7/dist-packages/arctic/store/_ndarray_store.pyc(self,item)370 def校验和(self,item):371 sha = hashlib.sha1() - > 372 sha.update(item . tostring())373 return Binary(sha.digest())374 MemoryError:

WTF?如果我使用df_q.to_csv()我会等待多年....

1 回答

  • 0

    您的问题实际上不是内存问题 . 如果您阅读了错误,那么您的图书馆似乎无法访问您的数据...

    第一个错误:表示您的服务器已超时 . ( ServerSelectionTimeoutError

    第二个错误:尝试更新MongoDB版本 .

    第3错误:重试访问您的服务器失败 . ( ServerSelectionTimeoutError

    所以基本上你的问题在于Arctic包本身(参见最后一个错误是校验和错误) . 您也可以从 df_q.to_csv() 的工作中推断出这一点,但它非常慢,因为它没有像Artic那样进行优化 . 我建议尝试重新安装北极包

相关问题