Applies ToRevolution Analytics

병렬화 된 작업자 스레드 간에 ODBC 연결을 여러 개 사용 하는 다음 예제 처럼 실패할 수 있습니다.

loaddata <- function(cn){result <- sqlQuery(cn,'select * from boston')return(head(result))}library(RODBC)cn1 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')cn2 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')cn3 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')cn4 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')rxSetComputeContext('localpar')system.time ({z <- rxExec(loaddata, rxElemArg(list(cn1,cn2,cn3,cn4)), packagesToLoad='RODBC')})Error in do.call(.rxDoParFUN, as.list(args)) :task 1 failed - "first argument is not an open RODBC channel"

작업자 프로세스의 닫힐 때 ODBC 연결을 받을 것이 문제가입니다.이 경우 문제는 연결 프로세스 별로 근로자가 부모의 연결을 공유할 수 없습니다 작업 자가 부모 프로세스 (예: 분기를 통해 만들어진 코어 직원)를 공유 하는 경우를 제외 하는 때문입니다. ODBC 계산 작업 작업 자가 아닌 분기를 배포 하려면 분산된 작업의 일환으로 각 작업자에 대해 연결을 설정 합니다.예:

loaddata <- function(){library(RODBC)cn <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')result <- sqlQuery(cn,'select * from boston')return(head(result))}z <- system.time({z <- rxExec(loaddata,packagesToLoad='RODBC')})

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.