我正在尝试为我的项目设置Dockerfile,但不确定如何在容器中设置JAVA_HOME。在
FROM python:3.6
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Define environment variable
ENV NAME Netflow
# Run netflow.py
CMD ["python", "netflow.py"]
在要求.txt我有。。。在
^{pr2}$我的netflow.py文件是。。。在
import pandas, math, re, log
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
conf = SparkConf().setAppName("building a warehouse")
sc = SparkContext(conf=conf)
df=pandas.read_csv(r'Testdataset.csv')
尝试运行后,终端中的输出是。。。。在
JAVA_HOME is not set
Traceback (most recent call last):
File "netflow.py", line 7, in <module>
sc = SparkContext(conf=conf)
File "/usr/local/lib/python3.6/site-packages/pyspark/context.py", line 115, in __init__
SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
File "/usr/local/lib/python3.6/site-packages/pyspark/context.py", line 298, in _ensure_initialized
SparkContext._gateway = gateway or launch_gateway(conf)
File "/usr/local/lib/python3.6/site-packages/pyspark/java_gateway.py", line 94, in launch_gateway
raise Exception("Java gateway process exited before sending its port number")
我一直在寻找解决办法,但到目前为止没有一个有效。在
我试过了
ENV JAVA_HOME /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
我试着用另一个命令
docker run -e "JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home" project env
我还是犯了同样的错误
要设置环境变量,可以在dockerfile中声明它们,如下所示:
或者
^{pr2}$实际上,您已经在发布的示例中设置了一个环境变量。在
有关详细信息,请参见documentation。在
您需要在容器中实际安装Java,但我建议您还是找到Pyspark docker映像,或者将Python添加到Openjdk映像中,这样就不需要处理太多的环境变量
更具体地说,
JAVA_HOME=/Library/Java/JavaVirtualMachines
是一个只能作为Mac路径使用的路径,不应该期望它在Linux容器中工作然而,当numpy是唯一真正读取数据的东西时,为什么需要Pyspark呢
相关问题 更多 >
编程相关推荐