1

我有一个大的 (~18gb) csv 文件,我想以大块的形式阅读。块被单独处理(过滤)和连接。因为我正在遍历几个块,所以我使用了函数的skip参数read_csv

下面是一个块的例子:

#Size of each chunk to be read and processed
chunk_size = 2000000
#In the full code in each loop the row_skip increases by the size of the chunk.
row_skip = 2000000 #initial
col_names = ['..','..']
chunk <- read_csv("G:/../data.csv", skip = row_skip,
                  n_max = chunk_size, col_names = col_names)

我的问题是,如果skip参数足够大(~500 000 +),我会收到以下错误:

错误:连接缓冲区(131072)的大小不足以容纳整行:通过设置增加它Sys.setenv("VROOM_CONNECTION_SIZE")

我已经尝试更改它(Sys.setenv("VROOM_CONNECTION_SIZE" = 131072 * 10000)),但问题仍然存在。现在skip参数必须随着我遍历块而增加,因此无论初始块大小如何,它都会在产生错误时达到阈值。

我认为这可能是由于 RAM 不足引起的,但我可以读取比它产生错误时的值大得多的初始块skip(例如chunk_size = 5000000,工作,而row_skip = 2000000已经产生错误)。

4

0 回答 0