在PostgreSQL上运行PL/R时,R可以处理比RAM更大的数据吗?

Fla*_*ros 5 postgresql r bigdata plr

当我使用R开源时,如果不使用特定的包,则不可能处理大于RAM内存的数据集.所以我想知道是否有可能处理在PostgreSQL中应用PL/R函数的大数据集.

我没有找到任何关于此的文档.

小智 11

正如Hong Ooi所提到的,PL/R将R解释器加载到PostgreSQL后端进程中.所以你的R代码正在"在数据库中"运行.

没有通用的方法来处理内存限制,但至少有两种可能的选择:

  1. 定义一个自定义PostgreSQL聚合,并使用您的PL/R函数作为"最终"函数.通过这种方式,您可以分组处理,因此不太可能出现内存问题.有关更多详细信息,请参阅在线PostgreSQL文档和PL/R文档(我不经常发布到stackoverflow,所以不幸的是它不允许我发布实际的URL)
  2. 使用PL/R安装的pg.spi.cursor_open和pg.spi.cursor_fetch函数到R解释器中,以便以块的形式将数据分页到R函数中.

请参阅PL/R docs:http://www.joeconway.com/plr/doc/index.html

我猜你真正想要的是一个data.frame,其中数据被分页到底层数据库游标,并透明地传递给你的R代码.这是我长期的TODO,但遗憾的是我还没有时间来解决这个问题.我被告知Oracle的R连接器具有此功能,所以它似乎可以完成.补丁欢迎;-)