我如何 Dockeries 包含 spark 依赖项的 python 脚本?

Posted

技术标签:

【中文标题】我如何 Dockeries 包含 spark 依赖项的 python 脚本?【英文标题】:How can I Dockeries a python script which contains spark dependencies? 【发布时间】:2018-02-26 09:21:33 【问题描述】:

我有一个 Python 文件,我尝试在其中导入 Spark 库。 当我使用 Docker 文件构建它时,它给了我错误,因为未设置“JAVA_HOME”。 我试图通过 Docker 文件安装 Java,但它也给出了错误。 下面是我尝试执行的 Dockerfile。

FROM python:3.6.4
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y  software-properties-common && \
    add-apt-repository ppa:webupd8team/java -y && \
    apt-get update && \
    echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
    apt-get install -y oracle-java8-installer && \
    apt-get clean 

ENV JAVA_HOME /usr/lib/jvm/java-8-oracle

ADD Samplespark.py /
COPY Samplespark.py /opt/ml/Samplespark.py

RUN pip install pandas
RUN pip install numpy
RUN pip install pyspark
RUN pip install sklearn
RUN pip install sagemaker_pyspark
RUN pip install sagemaker

CMD [ "python", "./Samplespark.py" ]

ENTRYPOINT ["python","/opt/ml/Samplespark.py"]

请帮我在 Docker 中安装 PySpark 的 Java 依赖项。

【问题讨论】:

java安装成功了吗?添加安装java的步骤后出现什么错误?我会如何调试它。首先我将启动容器,然后在容器内运行 Samplespark.py。 我认为echo oracle-java7-installer 应该是echo oracle-java8-installer 嗨@ASR 和@ashwinids,我在替换建议的文本之后和之前遇到了错误。 W: Failed to fetch http://ppa.launchpad.net/webupd8team/java/ubuntu/dists/jessie/main/binary-amd64/Packages 404 Not Found 【参考方案1】:

你有 Debian 操作系统,而不是 ubuntu 操作系统。这些 ppa 用于 ubuntu 操作系统。根据this 的说法,由于许可问题,文章 oracle java8 在 Debian 中不可用。 您有以下选择- 1.使用预装oracle java8的Ubuntu docker镜像one 2. 关注tutorial,了解如何在 Debian Jessie 上安装 Oracle java8 3.安装open_jdksudo apt-get install openjdk-8-jre

【讨论】:

感谢@ashwinids,我尝试使用#1,它解决了Java 问题,但我收到声明RUN pip install pyspark 的错误,我将如何在其中安装pySpark 依赖项?错误显示为KILLED,没有任何消息。 我认为该进程由于 OOM(内存不足错误)而被终止。尝试增加容器的内存。既然你原来的问题已经解决了,请采纳答案

以上是关于我如何 Dockeries 包含 spark 依赖项的 python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

用Intellij idea 编写Scala程序Spark2.0.0 依赖jar包如何解决

build.sbt:如何添加 spark 依赖项

Spark RDD:如何共享数据以进行并行操作

小记--------sparkSQL - spark基础知识

在运行 spark 应用程序时包含 aws jdbc 驱动程序

Spark submit依赖包管理!