(1)需要链接redshift数据库,第一步library(RJDBC):错误如下。
载入需要的程辑包:rJava
Error: package or namespace load failed for ‘rJava’:
loadNamespace()里算'rJava'时.onLoad失败了,详细内容:
调用: dyn.load(file, DLLpath = DLLpath, ...)
错误: 无法载入共享目标对象‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so’::
dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
Reason: image not found
错误: 无法载入程辑包‘rJava’

(2)可以尝试用dplyr进行链接数据库:
library(dplyr)
library(RPostgreSQL)

myRedshift <- src_postgres('demo',
host = 'redshiftdemo.ckffhmu2rolb.eu-west-1.redshift.amazonaws.com',
port = 5439,
user = "markus",
password = "XXX")

查看数据库中的表
myRedshift

这种方式链接成功,但是原本数据裤中存在的表,有一些通过这种方式找不到。

两个问题,望指教

    liamml 第一个问题,看起来你安装了比较新的 JDK 版本,建议使用 JDK 8 试试

    liamml rJava 包没装好或 R 的 Java 环境没配置好。两种可能的尝试:

    1. 在终端窗口中运行 R CMD javareconf,如果提示没权限则需要 sudo。然后在 R 里面 library(rJava) 看是否同样报错。

    2. 如果上一条路不通(library(rJava) 仍然报错),那么你可以把你系统中的 Java 拆了,然后用 Homebrew 安装 Java(brew tap homebrew/cask; brew cask install java)。最后在 R 里面 install.packages('rJava', type = 'source')。这种方法应该是可以把 rJava 正确装上的。

      对于第二条是因为数据库对某些表设置了权限,所以直接看不到。

      yihui 按这两种方式都没有解决T.T.
      删除了原来的java,然后重新装了java:
      Satisfying dependencies
      ==> Downloading http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a
      ######################################################################## 100.0%
      ==> Verifying checksum for Cask java
      ==> Installing Cask java
      ==> Running installer for java; your password may be necessary.
      ==> Package installers may write to any location; options such as --appdir are i
      Password:
      ==> installer: Package name is JDK 10.0.1
      ==> installer: Upgrading at base path /
      ==> installer: The upgrade was successful.
      ? java was successfully installed!

      然后:
      library(rJava)
      错误: package or namespace load failed for ‘rJava’:
      loadNamespace()里算'rJava'时.onLoad失败了,详细内容:
      调用: dyn.load(file, DLLpath = DLLpath, ...)
      错误: 无法载入共享目标对象‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so’::
      dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib
      Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
      Reason: image not found
      此外: Warning message:
      程辑包‘rJava’是用R版本3.4.4 来建造的

        解决了。
        这样:
        sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib

          1 年 后
          17 天 后

          rJava 找不到 JDK 是一个常见问题 …… 正常的解决方案还是像 2 楼推荐的在系统层面配置好。

          不过如果已经不想修改系统层面的东西,或者不确定改了环境变量或者做了软链接是否有副作用,而 JDK 已经装好并且知道位置,可以直接在 R 里手动读入 libjvm.dylib。缺点是只能自己单机用下,优点是简单速度快。

          dyn.load("/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/server/libjvm.dylib")
          library("rJava")