我试图创建一个dockerfile,从rocker/tidyverse构建一个图像,并包括SparkyR的spark。之前,在这篇文章中:无法在dockerfile中安装spark和sparkyr,我试图找出spark为什么不从我的dockerfile下载。在玩了5天之后,我想我已经找到了原因,但不知道如何修复它。
这是我的文件:
# start with the most up-to-date tidyverse image as the base image
FROM rocker/tidyverse:latest
# install openjdk 8 (Java)
RUN apt-get update \
&& apt-get install -y openjdk-8-jdk
# Install devtools
RUN Rscript -e 'install.packages("devtools")'
# Install sparklyr
RUN Rscript -e 'devtools::install_version("sparklyr", version = "1.5.2", dependencies = TRUE)'
# Install spark
RUN Rscript -e 'sparklyr::spark_install(version = "3.0.0", hadoop_version = "3.2")'
RUN mv /root/spark /opt/ && \
chown -R rstudio:rstudio /opt/spark/ && \
ln -s /opt/spark/ /home/rstudio/
RUN apt-get install unixodbc unixodbc-dev --install-suggests
RUN apt-get install odbc-postgresql
RUN install2.r --error --deps TRUE DBI
RUN install2.r --error --deps TRUE RPostgres
RUN install2.r --error --deps TRUE dbplyr
在这行之前,下载所有内容都没有问题: RUN Rscript -e 'sparklyr::spark_install(version = "3.0.0", hadoop_version = "3.2")'
这就给了我一个错误:
Step 5/11 : RUN Rscript -e 'sparklyr::spark_install(version = "3.0.0", hadoop_version = "3.2")'
---> Running in 739775db8f12
Error in download.file(installInfo$packageRemotePath, destfile = installInfo$packageLocalPath, :
download from 'https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop3.2.tgz' failed
Calls: <Anonymous>
Execution halted
ERROR: Service 'rocker_sparklyr' failed to build : The command '/bin/sh -c Rscript -e 'sparklyr::spark_install(version = "3.0.0", hadoop_version = "3.2")'' returned a non-zero code: 1
做了一些研究后,我认为这是一个超时错误,在这种情况下,我事先运行: RUN Rscript -e 'options(timeout=600)'
这并没有增加再次出错所需的时间。我通过rstudio把所有的东西都安装到了我的个人电脑上,安装起来没有问题。我认为这个问题是docker特有的,因为它无法从https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop3.2.tgz
我发现很少有关于这个问题的文档,我非常依赖这篇文章来解决这个问题。提前感谢任何有这方面知识的人伸出援手。
1条答案
按热度按时间kx1ctssn1#
自己下载版本,然后使用此功能安装