繁体   English   中英

如何在Docker容器中找到openjdk?

[英]How to locate openjdk in Docker container?

我尝试运行pyspark应用程序。为此,我首先从pip安装了pyspark,然后将openjdk:8设置为JAVA_HOME变量

Dockerfile的:

FROM python:3

ADD my_script.py /
COPY requirements.txt ./

ENV JAVA_HOME  /usr/lib/jvm/java-8-openjdk-amd64/

RUN pip install --no-cache-dir -r requirements.txt

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

my_script.py:

from pyspark import SparkContext
from pyspark import SparkConf

#spark conf
conf1 = SparkConf()
conf1.setMaster("local[*]")
conf1.setAppName('hamza')
print(conf1)
sc = SparkContext(conf = conf1)


from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
print(sqlContext)

Requirements.txt:

pyspark

numpy的

得到这个错误:

C:\Users\hrafiq\Desktop\sample>docker run -it --rm --name data2 my-python-app
<pyspark.conf.SparkConf object at 0x7f4bd933ba58>
/usr/local/lib/python3.7/site-packages/pyspark/bin/spark-class: line 71: 
/usr/lib/jvm/java-8-openjdk-amd64//bin/java: No such file or directory
Traceback (most recent call last):
   File "./my_script.py", line 14, in <module>
    sc = SparkContext(conf = conf1)
  File "/usr/local/lib/python3.7/site-packages/pyspark/context.py", line 115, in __init__
    SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
  File "/usr/local/lib/python3.7/site-packages/pyspark/context.py", line 298, in _ensure_initialized
    SparkContext._gateway = gateway or launch_gateway(conf)
  File "/usr/local/lib/python3.7/site-packages/pyspark/java_gateway.py", line 94, in launch_gateway
    raise Exception("Java gateway process exited before sending its port number")
Exception: Java gateway process exited before sending its port number  

所以问题是,如果找不到Java文件,那我将如何找到该文件? 我知道它存储在一些我们没有任何访问权的虚拟硬盘中。

任何帮助,将不胜感激

谢谢

设置JAVA_HOME env var是不够的。 您需要在docker映像中实际安装openjdk。

您的基本映像(python:3)本身基于Debian Stretch映像。 因此,您可以使用apt-get install来获取JDK:

FROM python:3

RUN apt-get update && \
     apt-get install -y openjdk-8-jdk-headless && \
    rm -rf /var/lib/apt/lists/*
ENV JAVA_HOME  /usr/lib/jvm/java-8-openjdk-amd64/

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY my_script.py ./
CMD [ "python", "./my_script.py" ]

(在上文中,我优化了层顺序,这样,仅更改脚本时,您就无需重新构建pip安装层)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM