我正在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来运行连接到cassandra datastax的pyspark,以便从中读取数据。
1条答案
按热度按时间0md85ypi1#
默认情况下,docker compose应该设置公共网络(如果两个容器都是由它启动的),因此您可以只使用dse容器名称来创建公共网络
spark.cassandra.connection.host
参数。如果docker compose没有维护这两个容器,那么您可以(您需要设置
spark.cassandra.connection.host
参数正确):只需使用dse容器的内部ip:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-dse
使用传统的docker链接(实际上不推荐)并使用dse容器名称进行连接使用
docker network connect
(请参阅文档)以及dse容器名称启动端口9042暴露在外面的dse docker映像,并使用主机的ip进行连接
p、 如果你的jupyter容器里有PypSpark,那么你不需要通过
-k
标志,因为它将启动Spark的dse以及,这不是很好的与4gb的内存。另外,如果不需要dse图,请删除-g
开关。