【问题标题】:Connect R to Redshift with RPostgreSQL on Mac 10.11.3在 Mac 10.11.3 上使用 PostgreSQL 将 R 连接到 Redshift
【发布时间】:2016-05-10 10:00:55
【问题描述】:

[原帖]

我见过几个类似的 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

我在 AWS 中有一个 EC2 节点 (Ubuntu),在办公室有另一个 Mac Pro,所以我尝试使用相同的代码从两者连接。

Linux 系统使用复制和粘贴完全相同的代码。这是 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 和所有相关文件,然后从 homebrew 重新安装 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

【问题讨论】:

  • 如果您需要其他系统信息,请告诉我,以便我在 OP 中提供。
  • 您是否尝试过“psql”(PostgreSQL 客户端命令)从您的 MacOS 机器访问您的 Redshift?
  • @MasashiMiyazaki 是的,我已经使用psql 进行连接,并且工作正常。此外,我还尝试了 Python 模块psycopg2,它也可以正常工作。
  • 您是否要避免使用RJDBC + redshift jar (docs.aws.amazon.com/redshift/latest/mgmt/…)?这对我很有效
  • @arvi1000 我也尝试过,但使用该方法时出现 JVM 初始化错误:Error in .jinit(classPath) : JNI_GetCreatedJavaVMs returned -1。也许这属于一个单独的 SO 问题。我没有走这条路,因为我现有的所有设置都是基于RPostgreSQL。但是,如果我没有找到解决方案,我可能会尝试解决 JVM 问题。

标签: r ssl amazon-redshift rpostgresql


【解决方案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")

【讨论】:

  • 上次我试过这个,它没有用,这次它有效。不确定发生了什么变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多