r - 在 R 中将大文件分区为小文件

标签 r loops bigdata chunks

我需要将一个大文件(14 GB)分解成更小的文件。本文件格式为txt,制表符为“;”我知道它有 70 列(字符串、 double )。我想读取 100 万并将它们保存在不同的文件中,file1、file2 ... fileN。

在@MKR 的帮助下

但是过程很慢,我尝试使用 fread,但这是不可能的。

如何优化此代码?

新代码

chunkSize <- 10000
conex <- file(description = db, open = "r")
data <- read.table(conex, nrows = chunkSize, header=T, fill=TRUE, sep =";")

index <- 0
counter <- 0
total <- 0
chunkSize <- 500000 
conex <- file(description=db,open="r")   
dataChunk <- read.table(conex, nrows=chunkSize, header=T, fill=TRUE,sep=";")

repeat {
dataChunk <- read.table(conex, nrows=chunkSize, header=FALSE, fill = TRUE, sep=";", col.names=db_colnames)
total <- total + sum(dataChunk$total)
counter <- counter + nrow(dataChunk)
write.table(dataChunk, file = paste0("MY_FILE_new",index),sep=";", row.names = FALSE)

  if (nrow(dataChunk) != chunkSize){
    print('linesok')
    break}
    index <- index + 1
  print(paste('lines', index * chunkSize))
}

最佳答案

不是基于 R 的答案,但在这种情况下,我推荐使用 GNU 的基于 shell 的解决方案 split .这应该比 R 解决方案快得多。

使用 10^6 将文件拆分为多个块行,你会这样做:

split -l 1000000 my_file.txt 

详情split ,见例如here .

关于r - 在 R 中将大文件分区为小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50313146/

相关文章:

html - print.xtable 弄乱了 html 标签

r - 如何停止 R 中的 for 循环并保留数据

java - 通过循环显示素数

json - 转储 Json 数据时 Apache Pig 出错

r - 求解 ODE - 只有正解

R:将选定列中的值添加到大量其他列

python - 如何将列名与字典键匹配并向计数器添加值

android - 重复脉冲动画

regex - 使用水槽将csv数据加载到多列的hbase表中

mysql - 适合大数据的数据库设计