0

16 GB RAM を搭載した Windows 10 ラップトップでこれを試みています。ここで、R の一時フォルダーを C: ドライブの外に設定したことにも言及する価値があります。これにより、次の行でフォルダーに.Renvironファイルを保持することで、オペレーティング システム ドライブの容量が不足しなくなります。Documents

TMPDIR=D:/rTemp 
TMP=D:/rTemp 
TEMP=D:/rTemp

D:/rTempRStudio で作業しているときに、フォルダーが実際に一時フォルダーとして使用されることを確認しました。

私は約の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具体的に使用しようとしたにもかかわらず、それはチャンク リーダーのようですreadLinesbigreadrチャンク リーダーとして使用すると、同じエラーが発生します。

同じコードは完全に正常に機能し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 ファイルを共有できません。与えられたコードとエラーメッセージの問題を誰でも理解できますか? どんな助けでも大歓迎です。

4

0 に答える 0