2017-03-03 9 views
0

monetdb SQL 백엔드에서 간단한 dplyr 명령을 실행하려고합니다. 연결 자체가 작동하는 것처럼 보이지만 dplyr 호출이 실패합니다. RSession을 다시 시작하고 MonetDB.R 패키지를 다시 설치하려고 시도했지만 성공하지 못했습니다.Dplyr 백엔드가 'sql_translate_env'에 적용 가능한 메소드를 찾을 수 없습니다.

library(dplyr) 
db <- MonetDB.R::src_monetdb("ai_db", user="analyst", host="monetdb.local", password="mypassword") 

## works! 
DBI::dbGetQuery(db$con, "SELECT count(*) from users") 

## fails 
db %>% tbl("users") %>% mutate(n= n()) 

출처 : 쿼리 [?? X 7] 데이터베이스 : MonetDB 11.25.5 (Dec2016-SP1) UseMethod ("sql_translate_env")에서

오류 : 'sql_translate_env'에 대한 적용 가능한 방법은 "MonetDBConnection"클래스의 객체

에 적용 도커 컨테이너 (rocker/verse : 3.3.2)에 기본 저장소/설정 (packages.install("dplyr"))을 사용하여 dplyr을 설치했습니다.

UPDATE 1 : 대신 MonetDBLite OD MonetDB.R

는 지금은 MonetDBLite를 설치하고 나는 연결을 만들려면 다음 코드를 사용 :의 때문에,

con <- mc(dbname="ai_db", user="analyst", password="mypassword", host="monetdb.local", 
      timeout=86400000) 
db <- MonetDBLite::src_monetdb("ai_db",con=con) 

내가 꽤 높은 시간 제한 설정을 낮은 것을 나타내는 오류 메시지 (아래 참조). 그러나 명령이 다시 실패하고 즉시 실패하기 때문에 시간 초과와 관련이 있다고 생각하지 않습니다.

## fails 
db %>% tbl("users") %>% mutate(n= n()) 

출처 : 쿼리 [?? x7] 데이터베이스 : MonetDB 11.25.5 (Dec2016-SP1)

.mapiRead (conObj @ connenv $ socket)의 오류 : MonetDB 서버의 빈 응답. 아마 시간 초과입니다. 'timeout'매개 변수가 'dbConnect()'인 응답의 경우 대기 시간을 늘릴 수 있습니다.

데이터 세트는 실제로 작습니다 (단지 5000 개 항목). 따라서 큰 문제는 아닙니다. MonetDB 그가 동일한 서버 ONT를 설치하고 잘 작동되고, 또한 DBI 인터페이스가 작동하는 (그리고 초 이내에 결과를 반환) :

DBI::dbGetQuery(con, "SELECT count(*) from videos") 

업데이트 2 :

가 지금은 둘 다 시도의 dev- 버전의 MonetdbLite와 저장소의 안정적인 CRAN 버전을 제공합니다. 둘 다 실패하지만 오류는 다릅니다.

packages.install("MonetDBLite") 
db <- MonetDBLite::src_monetdb("ai_db", user="analyst", password="mypassword", host="monetdb.local") 
db %>% tbl("users") %>% mutate(n= n()) 

출처 : 쿼리 [?? x7] 데이터베이스 : MonetDB 11.25.5 (Dec2016-SP1)

.mapiRead (conObj @ connenv $ socket)의 오류 : MonetDB 서버의 빈 응답. 아마 시간 초과입니다. 'timeout'매개 변수가 'dbConnect()'인 응답의 경우 대기 시간을 늘릴 수 있습니다.

devtools::install_github("hannesmuehleisen/MonetDBLite") 
db <- MonetDBLite::src_monetdb("ai_db", user="analyst", password="mypassword", host="monetdb.local") 
db %>% tbl("users") %>% mutate(n= n()) 

출처 : 쿼리 [??상속의 X 7] 오류 (con_acquire (x)를, "MonetDBEmbeddedConnection") : 찾을 수 없습니다 기능 "con_acquire"

+0

안녕하세요, 올바른 구문입니까? https://cran.rstudio.com/web/packages/dplyr/vignettes/databases.html –

+0

테스트 사례 전달 : https://github.com/hannesmuehleisen/MonetDBLite/blob/master/tests/testthat/test_03_dplyr.R –

+0

@AnthonyDamico'src_monetdb ("ai_db", user = "analyst", password = "mypassword", host = "monetdb.local")'시도한'devtools :: install_github ("hannesmuehleisen/MonetDBLite" 먼저,하지만 시간 초과를 설정하기 위해 다시 작성해야했습니다 (항상이 성가신 시간 초과 오류가 있음). 나는 다음 날에 dev-version을 설치하려고 노력할 것이지만, 안정적인 CRAN 버전을 사용할 수 있기를 바란다. (나는 pre-build docker 이미지를 사용하고 있으며 모든 monetdb를 설치할 필요가없는 솔루션을 선호한다. 의존성 (예 :'libmonetdb5.so')). – NaN

답변

1

대신 MonetDBLite 패키지를 사용하십시오, 그것은 너무, 독립 실행 형 서버에 연결하는 코드를 포함