【问题标题】:How to build a Dockerfile which runs a Shiny app using JDBC/Hive (needs rJava)?如何使用 JDBC/Hive(需要 rJava)构建运行 Shiny 应用程序的 Dockerfile?
【发布时间】:2019-06-06 07:54:45
【问题描述】:

我需要一个 Dockerfile 来运行 能够使用 JDBC 连接到 Hive 的闪亮应用。包 RJDBC 依赖于包 rJava,因此依赖于 Java。现在,我测试了多个选项:

  • 采用rocker/verse,其中包含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 一起使用的蓝图 DOCKERFILE 吗?会很棒

M

【问题讨论】:

    标签: r docker hive shiny rjdbc


    【解决方案1】:

    在错误的方向上几个小时后解决了。

    问题在于权限管理。 缺少对 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"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      相关资源
      最近更新 更多