當我使用R開放源代碼時,如果不使用特定包,則不可能處理大於RAM內存的數據集。所以我想知道是否可以處理在PostgreSQL中應用PL/R函數的大數據集。在PostgreSQL上運行PL/R時,R可以處理大於RAM的數據嗎?
我沒有找到任何關於此的文檔。
當我使用R開放源代碼時,如果不使用特定包,則不可能處理大於RAM內存的數據集。所以我想知道是否可以處理在PostgreSQL中應用PL/R函數的大數據集。在PostgreSQL上運行PL/R時,R可以處理大於RAM的數據嗎?
我沒有找到任何關於此的文檔。
正如Hong Ooi所說,PL/R將R解釋器加載到PostgreSQL後端進程中。所以你的R代碼正在「在數據庫中」運行。
有處理內存的限制沒有普遍的方式,但也有至少兩個可能的選擇:
見PL/R文檔瀏覽:http://www.joeconway.com/plr/doc/index.html
我猜你真的想擁有的是其中的數據分頁到並從底層數據庫遊標透明到您的R A data.frame碼。這是對我的長期TODO,但不幸的是我還沒有找到時間來解決它。我被告知Oracle的R連接器有這個功能,所以看起來可以完成。修補程序歡迎;-)
非常感謝您的回答!我使用了很多PostgreSQL和R,當我知道PL/R時,我對解決R內存約束的可能性感到很興奮,同時也擁有SQL的強大功能。 –
No. PL/R只是啓動一個單獨的R進程來運行你的R代碼。這會使用與您在命令行中使用的完全相同的二進制文件和可執行文件,因此所有標準限制仍然適用。
好的,但是有一些方法可以運行真正的「在數據庫分析中用」R? –
不,你不能。 – jwijffels
另外,請考慮'ff'軟件包,它允許您在磁盤上存儲大量數據。 – nograpes
有一些方法可以在數據庫中真正運行R嗎? (非商業用途,如R on Oracle) –