使用tbl和src_monetdblite访问数据

时间:2018-10-10 16:09:10

标签: monetdb monetdblite

很抱歉,如果在其他地方也提出过这个问题,我找不到。我正在研究MonetDBLite中的一些basic examples

> dbGetQuery(dbcon, "SELECT MAX(mpg) FROM mtcars WHERE cyl = 8")
L3
1 19.2

可以,但是

> ms <- MonetDBLite::src_monetdblite("./DB")
> t <- tbl(ms, "mtcars")
Error in UseMethod("tbl") : 
no applicable method for 'tbl' applied to an object of class
"c('src_monetdb', 'src_sql', 'src')"

似乎正在尝试将db分配给t而不是表。

任何建议将不胜感激。

我一直在细读资源,找到了useR2016演示文稿,并注意到这里的区别:

> ms
src:  MonetDBEmbeddedConnection
tbls: mtcars

好奇...

3 个答案:

答案 0 :(得分:2)

我非常喜欢与MonetDBLite一起使用dplyr。我对HannesMühleisen(感谢包裹!)的回答是,看来装载包裹的顺序很重要。在MonetDBLitedplyr之后加载dbplyr似乎是我的关键。首先加载MonetDBLite会导致类似于所提到的nzgwynn的错误。

有时我可以毫无问题地连接到数据库。有时我会收到类似以下错误消息:

  

UseMethod(“ db_query_fields”)中的错误:没有将适用于'db_query_fields'的适用方法应用于类“ MonetDBEmbeddedConnection”的对象

就像nzgwynn一样,我为为什么有时起作用而不是别人感到困惑。重新启动并重新安装不一定能为我解决。

从有关sparklyr的问题中得出的线索使我探索了软件包的加载顺序:

https://github.com/rstudio/sparklyr/issues/38

就像在这里用sparklyr指出的那样,我已经注意到其他R数据库软件包,如果全局环境已经包含连接对象,MonetDBLite将自动加载并附加。我的问题是我的工作区中有一个src_monetdb对象,这导致MonetDBLite在启动RStudio时加载。因此,虽然我以为我是在dplyrdbplyr之后加载它,但实际上它是第一个加载的。如果清除工作空间然后重新启动,则可以按首选顺序加载程序包。到目前为止,这种方法已经奏效。

我已经看到建议从一个干净的工作空间开始,这通常是一种好的做法,例如:https://twitter.com/hadleywickham/status/561146907519500288。有了MonetDBLite的快速查询功能,从全新的工作空间开始就不会浪费您任何时间。

最后,我会热衷于使用MonetDBLite。我在RStudio's database page上看到了它,并且立即对它的安装过程和安装速度印象深刻。这是我在R中使用〜2 GB数据集时发现的最好方法。以交互方式浏览数据时,dplyr查询运行得如此之快,以至于我好像在处理内存中的数据。而且,如果我要做的就是将整个数据集加载到内存中,那么MonetDBLite的速度与我从read.fst()包中尝试过的fst一样快。

答案 1 :(得分:0)

使用library("dplyr")和朋友之前,您需要先致电tbl。另外,请确保您已安装dbplyr

更新:另外,请确保在启动时加载的存储工作空间中没有连接对象(src)。从.Rdata文件加载连接无效!而是在每次运行脚本时从头开始创建connection / src。

答案 2 :(得分:0)

我关闭了R并再次打开它,相同的编码工作正常...