我一直在用pyspark做一个需要更多执行器的项目。目前,我一直在使用这个非常方便的图像(jupyter/pyspark-notebook),它可以自动创建带有pyspark的Jypyter Notebook。它非常容易使用。
我的问题是这个映像只创建了一个执行器--只有434.4 MiB的存储内存。
有没有办法为这个docker镜像创建更多的executors?
我在网上发现了很多docker-compose,它们示例化了更多的executors,但它们几乎是从头开始做所有的事情。我认为从头开始做所有的事情看起来像是一种过度的工作,因为这个图像工作得很好-但如果没有快速的解决方案,我也愿意接受它。
这是我的docker-compose文件:
jupyter:
container_name: jupyter_pyspark
build: .
ports:
- "8888:8888"
- "4040:4040"
- "4041:4041"
environment:
- JUPYTER_ENABLE_LAB=yes
volumes:
- ./work:/home/jovyan/work
hostname: localhost
command: "start-notebook.sh --NotebookApp.token='' --NotebookApp.password=''"
这是我的Dockerfile:
FROM jupyter/pyspark-notebook
# Change to root user to install java 8
USER root
# Install requirements
# COPY requirements.txt ./
# RUN pip3 install -r requirements.txt
# RUN rm -rf requirements.txt
EXPOSE 8088 8042 4040
USER $NB_UID
OBS:我试过更改配置变量,但没有成功。我想我必须在docker-compose中创建更多应用程序,但我不知道如何将它们连接到此映像。
from pyspark.sql import SparkSession
import pyspark.sql.functions as f
from pyspark.sql.types import *
spark = SparkSession \
.builder \
.config(conf=sparkConf) \
.master("local[*]") \
.appName("appYou") \
.getOrCreate()
1条答案
按热度按时间shyt4zoc1#
因为你运行的是
master local[*]
,所以你只启动了一个JVM,它将包含驱动程序和执行器的功能。这意味着在这种情况下,驱动程序/执行器的概念有点模糊。你将无法启动多个执行器:一切都将发生在一个驱动程序内部。但是你仍然可以让你的内存更大!要增加它的内存,你需要改变你的
spark.driver.memory
配置参数。您可以通过多种方式来实现这一点,如this SO answer中所述。