0

我在 RStudio 中收到 RDOBC 错误,当我在服务器本身上使用 R 时不会发生该错误。

R -

R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)

library(RODBC)
conn = odbcConnect("Cloudera_HIVE64", uid="manishm", pwd="tdpass")
data = sqlQuery(conn,"SELECT * from default.test")
data
[1] test.id test.name
<0 rows> (or 0-length row.names)

工作室 -

R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)

library(RODBC)
conn = odbcConnect("ClouderaHIVE64", uid="manishm", pwd="tdpass")
Warning messages:
1: In odbcDriverConnect("DSN=ClouderaHIVE64;UID=manishm;PWD=tdpass") :
[RODBC] ERROR: state HY000, code 11560, message [unixODBC][Cloudera]ODBC Unable to locate SQLGetPrivateProfileString function.
2: In odbcDriverConnect("DSN=Cloudera_HIVE64;UID=manishm;PWD=tdpass") :
ODBC connection failed

我检查了环境变量并确保以下内容对所有用户都是正确的

ODBCINI=/opt/cloudera/hiveodbc/Setup/odbcinst.ini 
LD_PRELOAD=/usr/lib64/libodbcinst.so

知道为什么这将在 R 而不是在具有相同环境设置的 RStudio 中工作吗?

4

1 回答 1

0

我曾经在 ubuntu 12.04 上遇到过类似的问题,我可以解决,但这有点 hacky。由于我不明白的原因,似乎环境变量有时不会传递给通过单击启动器启动的应用程序。我关注另一个包的问题,​​但症状相似:RStudio 似乎不知道正确定义的环境变量。

根据这次经验,我建议如下:

  1. 打开一个 linux shell 并将目录更改为cd /usr/share/applications
  2. 键入sudo cp rstudio.desktop rstudio.desktop.bak以创建我们将修改的此文件的备份副本。
  3. 使用您最喜欢的文本编辑器将 rstudio.desktop 编辑为 sudo,例如sudo gedit rstudio.desktop
  4. 之后的第二行[Desktop Entry]可能包含类似Exec=/usr/lib/rstudio/bin/rstudio %F. 更改此行,以便显式传递所需的环境变量,例如,Exec=sh -c 'env LD_PRELOAD=/usr/lib64/libodbcinst.so /usr/lib/rstudio/bin/rstudio %F'
  5. 关闭 RStudio 并尝试重新启动;可能在重新启动后。
  6. 如果您在进行这些修改后启动 RStudio 时遇到任何问题,请恢复文件的先前版本rstudio.desktopcd /usr/share/applications后跟cp -f rstudio.desktop.bak rstudio.desktop. 这应该恢复初始状态。这意味着您的问题没有得到解决,但至少不应该造成任何伤害。

希望这可以帮助。祝你好运...

于 2015-09-14T17:13:09.977 回答