我在Docker上运行Datastax Cassandra,我在Datastax Cassandra上创建了我的表,但是我想用docker-compose.yml安装Pyspark容器,但是我不知道如何设置docker-compose.yml文件的网络来连接Datastax Cassandra和Pyspark容器。
这是docker-compose.yml,用于运行pyspark:
spark:
image: jupyter/pyspark-notebook
container_name: pyspark
ports:
- "8888:8888"
- "4040:4040"
- "4041:4041"
- "4042:4042"
expose:
- "8888"
- "4040"
- "4041"
- "4042"
environment:
CHOWN_HOME: "yes"
GRANT_SUDO: "yes"
NB_UID: 1000
NB_GID: 100
deploy:
replicas: 1
restart_policy:
condition: on-failure
volumes:
- ./Documents:/home/jovyan/work,这是用于创建Datastax Cassandra容器的docker命令:
docker run \
-e \
DS_LICENSE=accept \
--memory 4g \
--name my-dse \
-d \
-v /Documents/datastax/cassandra:/lib/cassandra \
-v /Documents/datastax/spark:/lib/spark \
-v /Documents/datastax/dsefs:/lib/dsefs \
-v /Documents/datastax/log/cassandra:/log/cassandra \
-v /Documents/datastax/log/spark:/log/spark \
-v /Documents/datastax/config:/config \
-v /Documents/datastax/opscenter:/lib/opscenter \
-v /Documents/datastax/datastax-studio:/lib/datastax-studio \
datastax/dse-server:6.8.4 \
-g \
-s \
-k请帮助我编写docker-compose.yml来运行连接的Pyspark到Cassandra Datastax,以便从其中读取数据。
发布于 2020-10-21 01:59:17
默认情况下,如果两个容器都是由docker-compose启动的,那么docker-compose应该设置common network,所以您可以只对spark.cassandra.connection.host参数使用DSE容器名称。
如果两个容器都不是由docker-compose维护的,那么你可以(你需要正确设置spark.cassandra.connection.host参数):
DSE Docker只需使用DSE容器的内部IP:docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-dse
另外,如果你在Jupyter容器中有pyspark,那么你不需要传递-k标志,因为它也会在DSE上启动Spark,而且它在4 4Gb内存的情况下不是很好。此外,如果您不需要DSE Graph,请删除-g开关。
https://stackoverflow.com/questions/64447052
复制相似问题