我想使用
pyspark-glue-container中提到的命令
REPL shell (Pyspark)
从胶水容器运行 $ docker run -it -v ~/.aws:/home/glue_user/.aws -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark amazon/aws-glue-libs:glue_libs_3.0.0_image_01 pyspark
,但我不想以 docker run
运行,我想以 docker-compose
运行。因此创建了以下撰写文件:
container_name: "glue_container"
image: amazon/aws-glue-libs:glue_libs_2.0.0_image_01
environment:
DISABLE_SSL: "true"
ports:
- 4040:40404
- 18080:18080
command: pyspark
volumes:
- ${PWD}/local_path_to_workspace:/home/glue_user/workspace/
但是我无法启动并运行glue pyspark shell?但容器退出时出现错误。
我猜你遇到了“卷必须是映射”错误
尝试这种格式
services:
pyspark_repl:
image: amazon/aws-glue-libs:glue_libs_2.0.0_image_01
environment:
DISABLE_SSL: "true"
ports:
- 4040:40404
- 18080:18080
command: pyspark
volumes:
- ${PWD}:/home/glue_user/workspace/
然后像这样运行
docker-compose run --rm pyspark_repl
问题是 Docker Compose 和
pyspark
命令如何在容器内交互。
当您直接在 Docker 容器中运行
pyspark
时(如下所示),它通常需要一个交互式终端会话。
docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark amazon/aws-glue-libs:glue_libs_4.0.0_image_01 pyspark
将以下说明添加到您的撰写中可以解决该问题。
tty: true
stdin_open: true
这是我的撰写文件
services:
glue_pyspark:
image: amazon/aws-glue-libs:glue_libs_4.0.0_image_01
command: ["pyspark"]
volumes:
- ~/.aws:/home/glue_user/.aws:ro
- $WORKSPACE_LOCATION:/home/glue_user/workspace/
environment:
- AWS_PROFILE=${AWS_PROFILE}
- DISABLE_SSL=true
ports:
- "4040:4040"
- "18080:18080"
tty: true
stdin_open: true
deploy:
restart_policy:
condition: on-failure
终于可以这样称呼了
docker compose --env-file .env.local up -V glue_pyspark
# or in detached mode
docker compose --env-file .env.local up -d -V glue_pyspark
当您在容器内使用 jupyter 时,这同样适用
command: ["/home/glue_user/jupyter/jupyter_start.sh"]