cube.r
The snippet can be accessed without any authentication.
Authored by
Dirk Sarpe
Read bunch of csvs and roll the data dice.
cube.r 361 B
library(data.table)
library(parallel)
files <- commandArgs(trailingOnly = TRUE)
nlines <- 731759
reader <- function(file) {
fread(file, header = TRUE, colClasses = rep("double", 16))
}
cl <- makeForkCluster()
files.content <- parSapplyLB(cl, files, reader)
vfiles.content <- unlist(files.content, recursive = FALSE)
dim(vfiles.content) <- c(nlines, 16, 6)
-
Habs ein wenig angepasst. Die Konvertierung lasse ich auf idiv2 gerade mit Marias Daten laufen. Braucht natürlich 185 GiB Arbeitsspeicher, ist auf dem Server aber kein Problem. Was tatsächlich am längsten dauert, ist das
saveRDS
, das läuft mit 100% CPU und schreibt mit 18-20 MB/s ins GPFS, jeweils 9/10 OPS, also in 2 MB chunks. Schneller scheint saveRDS irgendwie nicht zu sein.library(data.table) library(parallel) files <- commandArgs(trailingOnly = TRUE) nlines <- 731759 nyears <- 17 reader <- function(file) { cat(paste("fread", file, "...\n")) fread(file, header = TRUE, colClasses = rep("double", nyears), showProgress = FALSE) } cl <- makeForkCluster(outfile = "") csvs <- parSapplyLB(cl, files, reader) cat("csvs size: ") print(object.size(csvs), units = 'auto', standard = 'IEC') cube <- unlist(csvs, recursive = FALSE) dim(cube) <- c(nlines, nyears, length(files)) cat("cube size: ") print(object.size(cube), units = 'auto', standard = 'IEC') cat(paste("saving cube ...\n")) saveRDS(cube, file = '/work/admchkr/cube.rds')
-
$ du -ch /work-local/maria/*.csv | tail -1 222G total
Hab jetzt den cube nochmal ohne compression gespeichert, macht von der Größe nicht viel:
$ ll /work/admchkr/cube*.rds -rw-r--r-- 1 admchkr root 93G Mar 6 18:30 /work/admchkr/cube-nozip.rds -rw-r--r-- 1 admchkr root 89G Mar 6 16:06 /work/admchkr/cube.rds
Please register or sign in to comment