【问题标题】:How to Connect Pyspark to datastax Cassandra that is running on the docker?如何将 Pyspark 连接到在 docker 上运行的 datastax Cassandra?
【发布时间】:2021-02-03 09:26:13
【问题描述】:

我在 Docker 上运行 Datastax Cassandra,我在 Datastax Cassandra 上创建了我的表,但我想用这个 docker-compose.yml 安装 Pyspark 容器,但我不知道如何设置 docker-compose 的网络.yml 文件将 Datastax Cassandra 和 Pyspark 容器连接在一起。

这是用于运行 pyspark 的 docker-compose.yml :

  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-spark docker-compose cassandra datastax spark-cassandra-connector


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2019-08-13
      • 2021-09-26
      • 2017-07-16
      • 2018-05-20
      • 2023-02-10
      • 2015-05-21
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多