RStudio - LD_PREOAD Issue
Я получаю ошибку RDOBC в RStudio, которая не возникает, когда я использую 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 с теми же настройками среды?
1 ответ
Когда-то у меня была похожая проблема на Ubuntu 12.04, которую я мог решить, но это было довольно странно. По причинам, которые я не понимаю, кажется, что переменные среды иногда не передаются в приложения, которые запускаются нажатием на панель запуска. Проблема, с которой я столкнулся, касалась другого пакета, но симптомы были похожи: правильно определенная переменная среды, казалось, была неизвестна RStudio.
Исходя из этого опыта, я предлагаю следующее:
- Откройте оболочку Linux и измените каталог на
cd /usr/share/applications
- Тип
sudo cp rstudio.desktop rstudio.desktop.bak
создать резервную копию этого файла, который мы изменим. - Отредактируйте rstudio.desktop как sudo с вашим любимым текстовым редактором, например
sudo gedit rstudio.desktop
- Вторая строка после
[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'
- Закройте RStudio и попробуйте начать снова; возможно после перезагрузки.
- Если у вас возникли проблемы с запуском RStudio после этих изменений, восстановите предыдущую версию файла.
rstudio.desktop
сcd /usr/share/applications
с последующимcp -f rstudio.desktop.bak rstudio.desktop
, Это должно восстановить исходное состояние. Это означает, что ваша проблема не была решена, но, по крайней мере, никакого вреда не должно быть.
Надеюсь это поможет. Желаю тебе удачи...