首页 > 解决方案 > 如何将 Pyspark 连接到在 docker 上运行的 datastax Cassandra?

问题描述

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

标签: apache-sparkdocker-composecassandradatastaxspark-cassandra-connector

解决方案


默认情况下,如果两个容器都由它启动,docker-compose 应该设置公共网络spark.cassandra.connection.host,因此您可以使用 DSE 容器名称作为参数。

如果这两个容器都不是由 docker-compose 维护的,那么您可以(您需要spark.cassandra.connection.host正确设置参数):

  • 只需使用 DSE 容器的内部 IP:docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-dse
  • 使用旧版 Docker 链接(不推荐,真的)并使用 DSE 容器名称进行连接
  • 使用docker network connect(参见文档),以及 DSE 容器名称
  • 启动 DSE Docker 镜像,端口 9042 对外暴露,并使用主机 IP 进行连接

PS 如果你在 Jupyter 容器中有 pyspark,那么你不需要传递-k标志,因为它也会在 DSE 上启动 Spark,而且它对于 4Gb 的 RAM 不是很好。此外,如果您不需要 DSE Graph,请移除该-g开关。


推荐阅读