16 GB RAM を搭載した Windows 10 ラップトップでこれを試みています。ここで、R の一時フォルダーを C: ドライブの外に設定したことにも言及する価値があります。これにより、次の行でフォルダーに.Renviron
ファイルを保持することで、オペレーティング システム ドライブの容量が不足しなくなります。Documents
TMPDIR=D:/rTemp
TMP=D:/rTemp
TEMP=D:/rTemp
D:/rTemp
RStudio で作業しているときに、フォルダーが実際に一時フォルダーとして使用されることを確認しました。
私は約のgzip圧縮されたcsvファイルを持っています。20 GB、非圧縮の場合は約 20 GB を占めます。83GB。disk.frame
次のコードでそれを作成しようとしました:
library(disk.frame) # set temporary directory of R outside C: drive via .Renviron
setup_disk.frame()
options(future.globals.maxSize = Inf)
fyl <- "G:/v_all_country/src/v_all_country_owner.csv.gz"
out <- "G:/v_all_country/src/v_all_country_owner.df"
col_classes_vector <- c(state_cd="factor", off_cd="factor", ... and so on for total 63 columns)
# increase the no. of recommended chunks for reduced RAM usage
no_of_chunks <- recommend_nchunks(file.size(fyl))*5
v_all_country_owner <- csv_to_disk.frame(
fyl,
outdir = out,
overwrite = TRUE,
compress = 100,
nchunks = no_of_chunks,
chunk_reader = "readLines", # documentation warns against data.tabe
colClasses = col_classes_vector
)
残念ながら、次のようなエラーが発生します。
Warning in if (is.character(con)) { :
closing unused connection 3 (localhost)
Error in data.table::fread(infile, header = header, ...) :
Opened 83.4GB (89553459056 bytes) file ok but could not memory map it. This is a 64bit process. There is probably not enough contiguous virtual memory available.
初めてこのエラーが発生したとき、一時的な R ディレクトリをオペレーティング システム ドライブの外に設定しました。しかし、エラーは続き、data.table
具体的に使用しようとしたにもかかわらず、それはチャンク リーダーのようですreadLines
。bigreadr
チャンク リーダーとして使用すると、同じエラーが発生します。
同じコードは完全に正常に機能しdisk.frame
、約 200 MB の小さな gzip 圧縮ファイルで使用すると、.
readr
次に、次のコードでバックエンドを使用しようとしました。
library(disk.frame) # set temporary directory of R outside C: drive via .Renviron
setup_disk.frame()
options(future.globals.maxSize = Inf)
fyl <- "G:/v_all_country/src/v_all_country_owner.csv.gz"
out <- "G:/v_all_country/src/v_all_country_owner.df"
# increase the no. of recommended chunks for reduced RAM usage
no_of_chunks <- recommend_nchunks(file.size(fyl))*5
csv_to_disk.frame(
fyl,
outdir = out,
overwrite = TRUE,
compress = 100,
nchunks = no_of_chunks,
backend = "readr",
chunk_reader = "readLines", # documentation warns against data.table
col_types = cols(state_cd = col_factor(), off_cd = col_factor(), ... and so on for a total of 63 columns)
)
このコードも を作成できずdisk.frame
、次のエラーが表示されました。
Warning in match(x, table, nomatch = 0L) :
closing unused connection 4 (localhost)
Warning in match(x, table, nomatch = 0L) :
closing unused connection 3 (localhost)
Error: cannot allocate vector of size 64 Kb
Error: cannot allocate vector of size 139 Kb
Error: cannot allocate vector of size 139 Kb
Error: cannot allocate vector of size 139 Kb
サイズと機密性の制約により、大きな csv ファイルを共有できません。与えられたコードとエラーメッセージの問題を誰でも理解できますか? どんな助けでも大歓迎です。