2015-09-14 28 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。這應該恢復初始狀態。這意味着你的問題沒有被打破,但至少不應該造成任何傷害。

希望這會有所幫助。祝你好運...