我需要一个Dockerfile来运行 Shiny 的应用程序,该应用程序能够使用JDBC连接到Hive 。软件包RJDBC取决于软件包rJava,因此也取决于Java。现在,我测试了多个选项:

  • 以具有Java的摇摆器/反向手动添加Shiny
  • 使用 rocker / shiny 手动添加Java

  • 两种选择都部分起作用,但不能完全起作用。 Hive连接的R代码如下:
    require(RJDBC)
    urlJDBC = "jdbc:hive2://...:8443/;ssl=true;sslTrustStore=./cacerts;trustStorePassword=changeit?hive.server2.transport.mode=http;hive.server2.thrift.http.path=gateway/default/hive"
    driver = JDBC("org.apache.hive.jdbc.HiveDriver", "hive-jdbc-standalone.jar", identifier.quote="`")
    con = dbConnect(driver, urlJDBC, "username", "password")
    

    我还在Dockerfile中添加了JDBC Jar文件,其内容如下:
    ADD ... ./hive-jdbc-standalone.jar
    

    但是,我无法成功运行它。
    有人有可以与Shiny和Hive / JDBC一起使用的blueproint DOCKERFILE吗?会很好

    中号

    最佳答案

    经过错误方向几个小时的解决。

    问题出在版权管理上。 缺少对JAR文件的读取访问权限

    新的DOCKERFILE非常简单:

    FROM rocker/shiny
    
    # Download and rename JAR file with JDBC HIVE driver.
    WORKDIR /srv/shiny-server/apps/shinyhive
    ADD <..jar-on-local-server..> ./hive-jdbc-standalone.jar
    
    RUN apt-get update && apt-get install -y \
        openjdk-8-jdk liblzma-dev libbz2-dev libicu-dev libssl-dev \
        && R CMD javareconf
    
    RUN R -e "install.packages('RJDBC', repos='http://cran.r-project.org')"
    
    RUN chmod 777 -R .
    COPY . .
    COPY ./shiny-server.sh /usr/bin/shiny-server.sh
    
    EXPOSE 3838
    
    CMD ["/usr/bin/shiny-server.sh"]
    

    关于r - 如何使用JDBC/Hive构建一个运行Shiny应用程序的Dockerfile(需要rJava)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56473165/

    10-12 22:32
    查看更多