python - 涉及 pyspark 的 CI/CD 测试 - 未设置 JAVA_HOME

标签 python docker apache-spark pyspark continuous-integration

我正在开发一个使用 pyspark 的项目,并希望设置自动化测试。

这是我的 .gitlab-ci.yml 文件的样子:

image: "myimage:latest"

stages:
  - Tests

pytest:
  stage: Tests
  script:
  - pytest tests/.

我使用 Dockerfile 构建了 docker 镜像 myimage,如下所示(参见 this excellent answer):

FROM python:3.7
RUN  python --version

# Create app directory
WORKDIR /app

# copy requirements.txt
COPY local-src/requirements.txt ./


# Install app dependencies
RUN pip install -r requirements.txt

# Bundle app source
COPY src /app

但是,当我运行它时,gitlab CI 作业错误如下:

/usr/local/lib/python3.7/site-packages/pyspark/java_gateway.py:95: in launch_gateway
    raise Exception("Java gateway process exited before sending the driver its port number")
E   Exception: Java gateway process exited before sending the driver its port number
------------------------------- Captured stderr --------------------------------
JAVA_HOME is not set

我了解 pyspark 要求我在计算机上安装 JAVA8 或更高版本。我在本地已经设置好了,但是……在 CI 过程中呢?如何安装 Java 才能正常工作?

我已经尝试添加

RUN sudo add-apt-repository ppa:webupd8team/java
RUN sudo apt-get update
RUN apt-get install oracle-java8-installer

到创建镜像的 Dockerfile,但是得到了错误

/bin/sh: 1: sudo: not found

.

如何修改 Dockerfile 以便使用 pyspark 进行测试?

最佳答案

对我有用的解决方案:添加

RUN apt-get update
RUN apt-get install default-jdk -y

之前

RUN pip install -r requirements.txt

然后一切都按预期工作,无需进一步修改!

编辑

为了完成这项工作,我必须将我的基础镜像更新为 python:3.7-stretch

关于python - 涉及 pyspark 的 CI/CD 测试 - 未设置 JAVA_HOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676684/

相关文章:

docker - Docker上的Tensorflow服务写太久

python - Apache Zeppelin - 修改默认语法高亮

python - 从 Python 列表向 PySpark DataFrame 添加新列

scala - Spark - 将元组转换为制表符分隔的字符串

python - gstreamer playbin - 在 Windows 上设置 uri

挂载卷时 Docker 的行为

docker - 无法从主机连接到 dockerized Vue CLI 服务

c# - 如何在C#中模拟元组和集合?

python - 如何在 Keras 中向 ResNet50 添加顶层密集层?

python - 动态改变 wx.TextCtrl 的大小