在Mac 10.11.3上使用RPostgreSQL将R连接到Redshift

时间:2016-02-01 19:59:39

标签: r ssl amazon-redshift rpostgresql

[原帖]

我见过几个类似的SO问题,但我认为其中任何一个都与操作系统无关。

长话短说,这是我在尝试建立与Redshift的ssl连接时所看到的。

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 XXXXXXXX@XXXXXXXX.us-east-1.redshift.amazonaws.com on dbname "db1")

我尝试了以下操作,但没有一个工作。

  1. Connect to Redshift via SSL using R
  2. Importing files from PostgreSQL to R
  3. Connect to Postgres via SSL using R
  4. https://groups.google.com/forum/#!topic/rpostgresql-dev/ELnVUJqjDbk
  5. 我在AWS中有一个EC2节点(Ubuntu),办公室里有另一台Mac Pro,所以我尝试使用相同的代码从两者连接。

    Linux系统适用于复制&amp;粘贴完全相同的代码。这是Linux服务器上的Sys.info()

    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配置之间会有什么不同?

    [更新2016/02/10]

    我尝试卸载R和所有相关文件,然后从自制程序重新安装R:

    brew tap homebrew/science
    brew install R
    

    相同的错误消息:

    > Error in postgresqlNewConnection(drv, ...) : 
        RS-DBI driver: (could not connect XXXXXXXX@XXXXXXXX.us-east-1.redshift.amazonaws.com on dbname "db1")
    

    仅供参考,我可以使用相同的代码连接到其他非ssl Redshift集群,因此它可能与Mac上的openssl相关。

    [更新2016/02/11]

    来自@ MasashiMiyazaki的更多信息评论:

    我已通过CLI使用psql进行连接,并且工作正常。此外,我还可以使用Python模块psycopg2成功连接。但是,我必须从.bash_profile 停用这一行才能使其正常工作:

    export DYLD_LIBRARY_PATH=/usr/lib:$DYLD_LIBRARY_PATH
    

1 个答案:

答案 0 :(得分:3)

在这里黑暗中拍摄。你试过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")