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.

Исходя из этого опыта, я предлагаю следующее:

  1. Откройте оболочку Linux и измените каталог на 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.desktop с cd /usr/share/applications с последующим cp -f rstudio.desktop.bak rstudio.desktop, Это должно восстановить исходное состояние. Это означает, что ваша проблема не была решена, но, по крайней мере, никакого вреда не должно быть.

Надеюсь это поможет. Желаю тебе удачи...

Другие вопросы по тегам