增加jupyter/pyspark-notebook中的执行者数量

sg3maiej  于 2023-04-05  发布在  Spark
关注(0)|答案(1)|浏览(153)

我一直在用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()
shyt4zoc

shyt4zoc1#

因为你运行的是master local[*],所以你只启动了一个JVM,它将包含驱动程序和执行器的功能。这意味着在这种情况下,驱动程序/执行器的概念有点模糊。你将无法启动多个执行器:一切都将发生在一个驱动程序内部。
但是你仍然可以让你的内存更大!要增加它的内存,你需要改变你的spark.driver.memory配置参数。
您可以通过多种方式来实现这一点,如this SO answer中所述。

相关问题