使用 pyspark 3.0.1 和 hadoop 3.2 构建 docker 映像
Posted
技术标签:
【中文标题】使用 pyspark 3.0.1 和 hadoop 3.2 构建 docker 映像【英文标题】:build docker image with pyspark 3.0.1 with hadoop 3.2 【发布时间】:2021-01-15 07:24:01 【问题描述】:我想使用 Hadoop 3.2.x 为 pyspark 3.0.1 构建一个 docker 映像。在 docker 文件中,如果我使用pip install pyspark==3.0.1
,它会安装 pyspark 3.0 但 hadoop 是 2.7。有没有办法实现这个或任何 docker 文件的例子。
【问题讨论】:
pip install pyspark
并没有“安装 hadoop”以实际运行 Hadoop 集群的能力。无论如何,您还应该使用单独的 Docker 服务来运行 Spark 和 Hadoop
@Kapil 你找到解决方案了吗?如果我想将 OneCricketeer 与 AWS S3(取决于 hadoop)一起使用 - 我想使用最新的 hadoop 版本...
@ItayB 在 docker 文件中添加了答案。
【参考方案1】:
我能够使用 pyspark 3.0 和 hadoop 3.2 使用这个 docker 文件创建 docker 映像。请注意,copy app.py /app/app.py
只是复制您要运行的代码。
FROM python:3.6-alpine3.10
ARG SPARK_VERSION=3.0.1
ARG HADOOP_VERSION_SHORT=3.2
ARG HADOOP_VERSION=3.2.0
ARG AWS_SDK_VERSION=1.11.375
RUN apk add --no-cache bash openjdk8-jre && \
apk add --no-cache libc6-compat && \
ln -s /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2 && \
pip install findspark
# Download and extract Spark
RUN wget -qO- https://www-eu.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION_SHORT.tgz | tar zx -C /opt && \
mv /opt/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION_SHORT /opt/spark
# To read IAM role for Fargate
RUN echo spark.hadoop.fs.s3a.aws.credentials.provider=com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper > /opt/spark/conf/spark-defaults.conf
# Add hadoop-aws and aws-sdk
RUN wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/$HADOOP_VERSION/hadoop-aws-$HADOOP_VERSION.jar -P /opt/spark/jars/ && \
wget https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/$AWS_SDK_VERSION/aws-java-sdk-bundle-$AWS_SDK_VERSION.jar -P /opt/spark/jars/
ENV PATH="/opt/spark/bin:$PATH"
ENV PYSPARK_PYTHON=python3
ENV PYTHONPATH="$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:$PYTHONPATH"
# Define default command
RUN mkdir $SPARK_HOME/conf
RUN echo "SPARK_LOCAL_IP=127.0.0.1" > $SPARK_HOME/conf/spark-env.sh
#Copy python script for batch
copy app.py /app/app.py
# Define default command
CMD ["/bin/bash"]
【讨论】:
以上是关于使用 pyspark 3.0.1 和 hadoop 3.2 构建 docker 映像的主要内容,如果未能解决你的问题,请参考以下文章