sqldf を使用して、R のデータフレームからいくつかのサブセットを選択しようとしています。したがって、私のコードは次のようになります。
library("sqldf")
...
usecase <- as.data.frame(use_case_list[[i]])
user_day_view <- sqldf("select distinct targetuser, day, count(*) from usecase group by targetuser,day")
...
全体として、for / foreach ループで約 80 ~ 90 の sqldf クエリを実行します。
テスト データセットでは問題なく動作しますが、実際のデータセット (約 21 Gb のデータ) で実行しようとすると、ある時点で次のエラー メッセージが表示されて失敗します。
"rsqlite_query_fetch: failed first step: database or disk is full"
この時点で、R プロセスは約 60 Gb の RAM を使用していますが、まだ数 Tb の RAM が空いています...
sqldf のドキュメント ( https://cran.r-project.org/web/packages/sqldf/sqldf.pdf ) を確認したところ、明示的に次のように書かれています。
"For SQLite and h2 data bases this defaults to ":memory:" which results in an embedded database"
したがって、インメモリSQLiteデータベースが必要です。これは、初期化せず、sqldfにオプション/パラメーターを提供しないためです。したがって、実行するのに十分なRAMがまだあるのに、データベースまたはディスクがいっぱいであると報告される理由がわかりません...