如何将Pypark连接到docker上运行的datastax cassandra?

r8xiu3jd  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(484)

我正在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,以便从中读取数据。

0md85ypi

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 开关。

相关问题