2015-09-14 87 views
0

当我在服务器本身上使用R时,RStudio中出现一个RDOBC错误,该错误不会发生。RStudio - LD_PREOAD问题

的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) 

RStudio -

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中使用相同的环境设置?

回答

0

我曾经在ubuntu 12.04上遇到过类似的问题,我可以解决,但它有点怪异。由于我不明白的原因,似乎环境变量有时不会传递到通过单击启动程序启动的应用程序。我关心另一个软件包的问题,​​但是症状相似: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时遇到任何问题,请使用cd /usr/share/applications之后的cp -f rstudio.desktop.bak rstudio.desktop恢复以前版本的文件rstudio.desktop。这应该恢复初始状态。这意味着你的问题没有被打破,但至少不应该造成任何伤害。

希望这会有所帮助。祝你好运...