Подключите R к Redshift с помощью RPostgreSQL на Mac 10.11.3

[Исходное сообщение]

Я видел пару подобных вопросов SO, но я не думаю, что какой-либо из них связан с ОС.

Короче говоря, это то, что я вижу, когда пытаюсь установить ssl-соединение с Redshift.

library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv,
                 host = "XXXXXXXX.us-east-1.redshift.amazonaws.com",
                 port = 5439,
                 user = "XXXXXXXX",
                 password = "XXXXXXXX",
                 dbname = "db1")

> Error in postgresqlNewConnection(drv, ...) : 
    RS-DBI driver: (could not connect [email protected] on dbname "db1")

Я пробовал следующее, и ни один из них не работал.

  1. Подключение к Redshift через SSL с помощью R
  2. Импорт файлов из PostgreSQL в R
  3. Подключение к Postgres через SSL с использованием R
  4. https://groups.google.com/forum/#!topic/rpostgresql-dev/ELnVUJqjDbk

У меня есть узел EC2 (Ubuntu) в AWS и еще один Mac Pro в офисе, поэтому я попытался использовать один и тот же код для подключения с обоих.

Система Linux работает с копированием и вставкой одного и того же кода. Вот Sys.info() на сервере Linux:

sysname                                              Linux
release                                  3.13.0-48-generic
version        #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015
nodename                                   ip-xx-xxx-xx-xx
machine                                             x86_64
login                                              unknown
user                                                  bcui
effective_user                                        bcui

Однако Mac Pro вышел из строя с точно таким же сообщением об ошибке. Вот Mac Sys.info() (такой же, как мой ноутбук Mac):

sysname                                             Darwin
release                                             15.3.0
version                      Darwin Kernel Version 15.3.0:
                             Thu Dec 10 18:40:58 PST 2015;
                       root:xnu-3248.30.4~1/RELEASE_X86_64
nodename                                    bcui-MBP.local
machine                                             x86_64
login                                                 bcui
user                                                  bcui
effective_user                                        bcui

Мне интересно, что может отличаться между конфигурацией Mac и Linux, которая вызывает это сообщение об ошибке?

[Обновление от 10 февраля 2016 г.]

Я попытался удалить R и все связанные файлы, а затем переустановить R из доморощенного:

brew tap homebrew/science
brew install R

То же сообщение об ошибке:

> Error in postgresqlNewConnection(drv, ...) : 
    RS-DBI driver: (could not connect [email protected] on dbname "db1")

К вашему сведению, я могу подключиться к другим кластерам Redshift без SSL, используя тот же код, так что это может быть связано с openssl на Mac.

[Обновление от 11 февраля 2016 г.]

Дополнительная информация из комментария @MasashiMiyazaki:

Я использовал psql через интерфейс командной строки для подключения, и он отлично работает. Кроме того, я также могу успешно подключиться с помощью модуля Python psycopg2. Однако мне придется отключить эту строку из .bash_profile, чтобы они работали:

export DYLD_LIBRARY_PATH=/usr/lib:$DYLD_LIBRARY_PATH

person Boxuan    schedule 01.02.2016    source источник
comment
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация о системе, чтобы я мог предоставить ее в ОП.   -  person Boxuan    schedule 01.02.2016
comment
Вы когда-нибудь пробовали использовать psql (клиентскую команду PostgreSQL) для доступа к Redshift с компьютера с MacOS?   -  person Masashi M    schedule 11.02.2016
comment
@MasashiMiyazaki Да, я использовал psql для подключения, и он отлично работает. Кроме того, я также пробовал модуль Python psycopg2, и он тоже отлично работает.   -  person Boxuan    schedule 11.02.2016
comment
Вы пытаетесь избежать использования RJDBC + банки с красным смещением ( docs.aws.amazon.com/redshift/latest/mgmt/ )? Это хорошо работает для меня   -  person arvi1000    schedule 11.02.2016
comment
@arvi1000 arvi1000 Я тоже пробовал, но получаю ошибку инициализации JVM, используя этот метод: Error in .jinit(classPath) : JNI_GetCreatedJavaVMs returned -1. Возможно, это относится к отдельному вопросу SO. Я не пошел по этому пути, так как все мои существующие настройки основаны на RPostgreSQL. Однако я мог бы попытаться решить проблему JVM, если не вижу решения для этого.   -  person Boxuan    schedule 12.02.2016
comment
@arvi1000 arvi1000 Поскольку вы подняли этот вопрос, echo $JAVA_HOME возвращает вам /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home? Спасибо!   -  person Boxuan    schedule 12.02.2016
comment
нет, он ничего не возвращает (у меня нет такой переменной среды)   -  person arvi1000    schedule 12.02.2016
comment
Вы пробовали переадресацию локального порта? Итак: ssh -i ~/.ssh/YOUR-KEY.pem -L 5439:localhost:5439 [email protected] это перенаправляет ваш локальный порт 5439 на порт сервера 5439. Затем попробуйте в R подключиться к localhost:5439. Для получения дополнительной информации см. docs.aws.amazon. com/ElasticMapReduce/latest/DeveloperGuide/   -  person Rentrop    schedule 13.02.2016


Ответы (1)


Здесь снимали в темноте. Вы пробовали RPostgres?

Установите его так

# install.packages("devtools")
devtools::install_github("RcppCore/Rcpp")
devtools::install_github("rstats-db/DBI")
devtools::install_github("rstats-db/RPostgres")

Затем проверьте это

library(DBI)
library(RPostgres)

con <- dbConnect(RPostgres::Postgres(),
           host = "XXXXXXXX.us-east-1.redshift.amazonaws.com",
           port = 5439,
           user = "XXXXXXXX",
           password = "XXXXXXXX",
           dbname = "db1")
person JackStat    schedule 15.02.2016
comment
В прошлый раз я пробовал это, и это не сработало, и это сработает в этот раз. Не уверен, что изменилось. - person Boxuan; 18.02.2016