Использование tbl и src_monetdblite для доступа к данным

Извините, если этот вопрос был задан в другом месте, я не могу его найти. Я работаю над некоторыми основными примерами в 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')"

Кажется, что он пытается присвоить БД не таблице.

Любые предложения будут ценны.

Я просматривал ресурсы, нашел презентацию useR2016 и заметил здесь разницу:

> ms
src:  MonetDBEmbeddedConnection
tbls: mtcars

Любопытно...

3 ответа

Я большой поклонник использования MonetDBLite вместе с dplyr, Мое дополнение к ответу Ханнеса Мюлейзена (спасибо за упаковку!) Состояло бы в том, что, похоже, порядок загрузки пакетов может иметь значение. загрузка MonetDBLite после dplyr а также 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. Поэтому я думал, что загружаю его после dplyr а также dbplyrЭто была действительно загрузка в первую очередь. Если я очищаю рабочее пространство и затем перезагружаюсь, я могу загрузить пакеты в предпочтительном порядке. Пока что этот метод сработал.

Я видел, что начинать с чистого рабочего пространства рекомендуется в качестве хорошей практики, например: https://twitter.com/hadleywickham/status/561146907519500288. Начиная с нового рабочего пространства, вы не теряете времени MonetDBLiteБыстрая возможность запроса.

Наконец, я бы добавил энтузиазм по поводу использования MonetDBLite. Я увидел, что это упомянуто на странице базы данных RStudio, и сразу же был впечатлен тем, насколько легко его настроить и насколько быстро. Это лучший способ, который я нашел для работы с набором данных ~2 ГБ в R. При интерактивном исследовании данных dplyr запросы выполняются так быстро, что кажется, что я работаю с данными в памяти. И если все, что я хочу сделать, это загрузить весь набор данных в память, MonetDBLite так же быстро или быстрее, чем другие методы, которые я пробовал, как read.fst() от fst пакет.

Я закрыл R и открыл его снова, и та же кодировка работала нормально...

Вам нужно позвонить library("dplyr") Перед использованием tbl и друзья. Также убедитесь, что у вас есть dbplyr установлены.

Обновление: также, пожалуйста, убедитесь, что нет объекта подключения (src) в сохраненном рабочем пространстве, загруженном при запуске. Загрузка соединений из файлов.Rdata не работает! Вместо этого создавайте соединение /src с нуля каждый раз, когда вы запускаете скрипт.

Другие вопросы по тегам