3

这里有几个相关的线程,但我尝试通过 OpenCPU 和 vRODBC 使用 R 连接到 Vertica 的要点是:

  1. 我从 RJDBC 开始,它在 RStudio(甚至是服务器 RStudio 版本)中运行良好,但 OpenCPU/rApache 不喜欢它。OpenCPU 上的 rJava
  2. 我安装了作为 RODBC 派生的 vRODBC 包,并且我使用 isql 从 CMD 行和使用 DSN 和 odbcConnect('myDSNName') 从 RStudio Server 成功查询了Vertica
  3. 当我使用可在 RStudio Server 上运行的代码编译应用程序时,尝试通过 OpenCPU(从控制台拉出)运行它时出现连接错误:

它适用于 RStudio 服务器

> vertica =  odbcConnect("VerticaDSN")
> data = sqlQuery(vertica, query)
> data
  TDIDCount
1      3015

但不是来自我创建的 Opencpu 应用程序

//From Console Output
[vRODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib '/opt/vertica/lib64/libverticaodbc.so.6.1.3' : file not found
Warning message:
ODBC connection failed
[1] -1

我检查了这条路径,它显然确实存在。我发现另一个问题说这个错误是由无法为 libverticaodbc.so 库加载的依赖项引起的,所以我尝试按照步骤查看我可能没有使用 opencpu 用户的权限的库无济于事. 无法使用 UnixODBC 打开 lib

$ sudo su - opencpu
$ ldd /opt/vertica/lib64/libverticaodbc.so.6.1.3
        linux-vdso.so.1 =>  (0x00007fff5cd10000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f16a30cc000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f16a2eb1000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f16a2c77000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f16a2a59000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f16a2755000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f16a244e000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f16a2238000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f16a1e73000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f16a4854000)
$

我很接近了...非常接近了...我能感觉到...只需修复一些模糊的环境变量或权限,以便 OpenCPU 可以正确找到 ODBC 驱动程序,然后我将拥有更多的 R+webApp 荣耀推进我前进!

4

0 回答 0