0

抱歉,如果这个问题在其他地方被问过,我找不到。我正在研究 MonetDBLite 中的一些基本示例

> 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 而不是 table。

任何建议将不胜感激。

我一直在阅读资源并找到了一个 userR2016 演示文稿,并注意到这里的不同之处:

> ms
src:  MonetDBEmbeddedConnection
tbls: mtcars

好奇的...

4

3 回答 3

2

我非常喜欢MonetDBLitedplyr. 我对 Hannes Mühleisen(感谢您的包裹!)的补充是,您加载包裹的顺序似乎很重要。加载MonetDBLite之后似乎是我的关键dplyrdbplyr首先加载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 的数据库页面上看到了它,并立即对它的设置简单性和速度印象深刻。这是我发现在 R 中处理约 2 GB 数据集的最佳方式。以交互方式探索数据时,dplyr查询运行得非常快,感觉就像我正在处理内存中的数据。如果我想做的只是将整个数据集加载到内存中,MonetDBLite那么它与我尝试过read.fst()的其他方法一样快或更快fst

于 2018-11-14T19:42:21.993 回答
0

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

于 2018-10-11T16:27:15.523 回答
0

library("dplyr")使用前需要tbl和朋友打电话。还要确保您已dbplyr安装。

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

于 2018-10-11T11:15:09.623 回答