gpt4 book ai didi

kdb - [Q/KDB+] : wsfull when creating splayed table from csv using `.Q.fs`

转载 作者:行者123 更新时间:2023-12-05 07:48:33 25 4
gpt4 key购买 nike

我有一个 9.6GB csv 文件,我想从中创建一个磁盘展开表。

当我运行此代码时,我的 32 位 q 进程(在 Win 10、16GB RAM 机器上)内存不足 ('wsfull),并在创建不完整的 4.68GB 展开表 (看截图)。

path:{` sv (hsym x 0), 1_x}
symh: {`$1_ string x}

colnames: `ric`open`high`low`close`volume`date
dir: `:F:

db: `db
tbl: `ohlcv
tbldisk: path dir,db,tbl
tblsplayed: path dir,db,tbl,`
dbsympath: symh path dir,db
csvpath: `:F:/prices.csv

.Q.fs[{ .[ tblsplayed; (); ,; .Q.en[path dir,db] flip colnames!("SFFFFID";",")0:x]}] csvpath

当使用 .Q.fs0: 读取 csv 文件时,内存和磁盘背后到底发生了什么? csv 是逐行读取还是逐列读取?

我以为只有132kB chunks在任何给定时间都保存在内存中,希望 .Q.fs'wsfull 抵抗的。

q 进程是否真的将整列(splay)读入内存,一次一个,因为它递增 block ?

考虑到:(根据此 source 等):

on 32-bit systems the main memory OLTP portion of a database is limited to about 1GB of raw data, i.e. 1/4 of the address space

这几乎可以解释内存不足的原因。如 'wsfull 之后截取的屏幕截图所示,有几列接近 1GB 限制。

enter image description here

这是一个内存分析运行:

.Q.fs[{ 0N!.Q.w[]; .[ tblsplayed; (); ,; .Q.en[path dir,db] flip colnames!("SFFFFID";",")0:x]}] csvpath

enter image description here

最佳答案

我相信 Q 读取 csv 时是逐行的。你的 q session 崩溃的原因可能是因为你在

.Q.fs[{ .[ tblsplayed; (); ,; .Q.en[path dir,db] flip colnames!("SFFFFID";",")0:x]}] csvpath 

尝试添加.Q.gc[]

.Q.fs[{ .Q.gc[]; .[ tblsplayed; (); ,; .Q.en[path dir,db] flip colnames!("SFFFFID";",")0:x]}] csvpath 

关于kdb - [Q/KDB+] : wsfull when creating splayed table from csv using `.Q.fs` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com