【问题标题】:odbc connect to hive error in Rstudio-Server "SASL(-4): no mechanism available: No worthy mechs found" but works fine in terminalodbc 连接到 Rstudio-Server 中的配置单元错误“SASL(-4):没有可用的机制:没有找到有价值的机甲”,但在终端中工作正常
【发布时间】:2021-12-14 15:34:49
【问题描述】:

我正在尝试将 Rstudio Server 从 1.2.5042 升级到最新的 2021.09.1-372。但是当我尝试通过 odbc 连接 hive 时出现问题。然后我将Rstudio Server降级到1.4.1106,还是一样的错误。

> library(DBI)
> con <- dbConnect(odbc::odbc(), "hive", timeout = 10)
Error: nanodbc/nanodbc.cpp:1021: 00000: [Cloudera][ThriftExtension] (9) Error occurred while authenticating via SASL. Error details: SASL(-4): no mechanism available: No worthy mechs found 

但是当我回到 1.2.5042 时,odbc 工作正常。我比较了来自 Rstudio 控制台和 Rstudio 终端的 Sys.getenv() 结果,LD_LIBRARY_PATH 或 PATH 没有什么不同。我用谷歌搜索并发现其他人有同样的错误。但他们正在使用 python 或其他东西,他们通过apt install libsasl2 libsasl2-dev 或其他东西修复了它。但是由于 odbc 在 rstudio 内部和 rstudio 外部的终端以及 rstudio 1.2.5042 中都可以正常工作,因此我机器的 odbc env 已经是正确的。而且,isql -v hive 工作正常。 (DSN 配置单元已在 ~/.odbc.ini 中设置)。我不知道如何得到现在的工作。我每天都使用 odbc 从 hive 中查询数据。新版本的 Rstudio Server 有什么需要做的设置吗?

Sys.getenv()sessionInfo()的输出如下:

> Sys.getenv()
CLICOLOR_FORCE                          1
CLOUDERAHIVEINI                         /opt/cloudera/hiveodbc/lib/64//cloudera.hiveodbc.ini
DISPLAY                                 :0
EDITOR                                  vi
GIT_ASKPASS                             rpostback-askpass
HOME                                    /home/rstudio
LANG                                    en_US.UTF-8
LD_LIBRARY_PATH                         /usr/local/lib/R/lib::/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu:/usr/lib/jvm/java-11-openjdk-amd64/lib/server
LN_S                                    ln -s
LOGNAME                                 rstudio
MAKE                                    make
MPLENGINE                               tkAgg
PAGER                                   /usr/bin/pager
PATH                                    /usr/lib/rstudio-server/bin:/usr/lib/rstudio-server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/rstudio-server/bin/postback
R_BROWSER                               xdg-open
R_BZIPCMD                               /usr/bin/bzip2
R_DOC_DIR                               /usr/local/lib/R/doc
R_GZIPCMD                               /usr/bin/gzip
R_HOME                                  /usr/local/lib/R
R_INCLUDE_DIR                           /usr/local/lib/R/include
R_LIBS                                  /usr/local/lib/R/site-library:/usr/local/lib/R/library
R_LIBS_SITE                             
R_LIBS_USER                             ~/R/x86_64-pc-linux-gnu-library/4.0
R_PAPERSIZE                             letter
R_PDFVIEWER                             /usr/bin/xdg-open
R_PLATFORM                              x86_64-pc-linux-gnu
R_PRINTCMD                              /usr/bin/lpr
R_RD4PDF                                times,inconsolata,hyper
R_SESSION_TMPDIR                        /tmp/Rtmpdxn0JW
R_SHARE_DIR                             /usr/local/lib/R/share
R_STRIP_SHARED_LIB                      strip --strip-unneeded
R_STRIP_STATIC_LIB                      strip --strip-debug
R_SYSTEM_ABI                            linux,gcc,gxx,gfortran,gfortran
R_TEXI2DVICMD                           /usr/bin/texi2dvi
R_UNZIPCMD                              /usr/bin/unzip
R_ZIPCMD                                /usr/bin/zip
RMARKDOWN_MATHJAX_PATH                  /usr/lib/rstudio-server/resources/mathjax-27
RS_RPOSTBACK_PATH                       /usr/lib/rstudio-server/bin/rpostback
RS_SESSION_TMP_DIR                      /var/run/rstudio-server/rstudio-rsession
RSTUDIO                                 1
RSTUDIO_CONSOLE_COLOR                   256
RSTUDIO_CONSOLE_WIDTH                   135
RSTUDIO_HTTP_REFERER                    http://10.27.5.209:8789/
RSTUDIO_PANDOC                          /usr/lib/rstudio-server/bin/pandoc
RSTUDIO_PROGRAM_MODE                    server
RSTUDIO_R_MODULE                        
RSTUDIO_R_PRELAUNCH_SCRIPT              
RSTUDIO_R_REPO                          
RSTUDIO_R_VERSION_LABEL                 
RSTUDIO_SESSION_STREAM                  rstudio-d
RSTUDIO_USER_IDENTITY                   rstudio
RSTUDIO_USER_IDENTITY_DISPLAY           rstudio
RSTUDIO_WINUTILS                        bin/winutils
SED                                     /usr/bin/sed
SSH_ASKPASS                             rpostback-askpass
TAR                                     /usr/bin/tar
TERM                                    xterm-256color
USER                                    rstudio
> sessionInfo()
R version 4.0.4 (2021-02-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.3 LTS

Matrix products: default
BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=C              LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] DBI_1.1.1

loaded via a namespace (and not attached):
 [1] bit_4.0.4       odbc_1.3.1      compiler_4.0.4  ellipsis_0.3.1  hms_1.0.0       tools_4.0.4     Rcpp_1.0.6      bit64_4.0.5    
 [9] vctrs_0.3.7     blob_1.2.1      lifecycle_1.0.0 pkgconfig_2.0.3 rlang_0.4.10   

我的odbc.ini 内容如下。它适用于 rstudio 1.2.5042。

[hive]
Description=Cloudera ODBC Driver for Apache Hive (64-bit)
Driver=/opt/cloudera/hiveodbc/lib/64/libclouderahiveodbc64.so
Host = 192.168.90.54
Port = 10000
UID = hive_username
PWD = hive_password
AuthMech = 3
UseSASL = 1
Database = default
UseNativeQuery=1

举个小例子,我们可以使用 docker 快速运行 hiveserver2,docker-hive 示例可以在这里找到:https://github.com/big-data-europe/docker-hive。克隆它并 cd 到它的目录,然后 docker-compose up -d 将运行一个简单的 hive。然后将新的DSN添加到.odbc.ini,可以在rstudio-server窗格中建立一个新的连接。然后我们可以再次显示错误。

[hive_test]
Description=Cloudera ODBC Driver for Apache Hive (64-bit)
Driver=/opt/cloudera/hiveodbc/lib/64/libclouderahiveodbc64.so
Host = YOUR_LOCAL_IP(or localhost)
Port = 10000
Database = default
UseNativeQuery = 1

顺便说一句,我在 Windows 和 MacOS 上尝试了 Rstudio 桌面,连接到 hive 都可以正常工作。此错误仅发生在 Rstudio-Server 中。我试图将 env 变量从终端中的 R 复制到 Rstudio-server 中的 R 控制台,没有任何变化。我还通过 Rstudio-server 终端尝试了 pyodbc 并在 Rstudio-server 控制台中进行了调整,pyodbc 在终端中也可以正常工作,但在 Rstudio-server 终端中也会出现同样的错误。

更新,我在 Ubuntu 上试过,Rstudio 桌面也有同样的错误。

【问题讨论】:

    标签: r hive odbc rstudio rstudio-server


    【解决方案1】:

    将cloudera odbc驱动升级到2.6.11版本,错误消失。奇怪的是它只出现在 Rtudio 以及 R 和 Python 中,但它在终端中运行良好。无论如何,新版本的驱动程序避免了错误。
    希望我的经验对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 2013-06-20
      • 1970-01-01
      • 2023-02-19
      • 1970-01-01
      • 2018-11-15
      相关资源
      最近更新 更多