pyspark 无法连接到Docker中的Cassandra,使用cqlsh获得“无法连接到任何服务器”

hgqdbh6s  于 2023-05-16  发布在  Spark
关注(0)|答案(1)|浏览(165)

我正在尝试使用PySpark和Docker构建一个容器化的小型批量数据处理管道,之后处理的数据将存储在Cassandra中。我正在使用一个docker-compose文件来为spark和Cassandra提取图像,我能够运行我的pyspark文件而没有错误,但是当我试图运行cassandra行时,例如创建keyspace和表,这就是为什么我试图在容器中使用cqlsh,之后我得到了以下错误

Connection error: ('Unable to connect to any servers', { \
  '127.0.0.1:9042': ConnectionRefusedError(111, "Tried connecting to \
  [('127.0.0.1', 9042)]. Last error: Connection refused")})

docker命令:-

docker compose up -d

docker ps 

docker exec -it container-id cqlsh: I get the error after this command

我试过拉各种类型的Cassandra图像,它出现了同样的错误,我已经检查了几个来源,以确定如何使用容器中的气流来安排这一点无济于事
我使用了下面的docker-compose:-

version: '3'

networks:
  app-tier:
    driver: bridge

services:
  spark:
    image: docker.io/bitnami/spark:3.3
    environment:
      - SPARK_MODE=master
      - SPARK_RPC_AUTHENTICATION_ENABLED=no
      - SPARK_RPC_ENCRYPTION_ENABLED=no
      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
      - SPARK_SSL_ENABLED=no
      - SPARK_USER=spark
    ports:
      - '8080:8080'

    volumes: 
    - ".:/opt/spark"
  spark-worker:
    image: docker.io/bitnami/spark:3.3
    environment:
      - SPARK_MODE=worker
      - SPARK_MASTER_URL=spark://spark:7077
      - SPARK_WORKER_MEMORY=1G
      - SPARK_WORKER_CORES=1
      - SPARK_RPC_AUTHENTICATION_ENABLED=no
      - SPARK_RPC_ENCRYPTION_ENABLED=no
      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no
      - SPARK_SSL_ENABLED=no
      - SPARK_USER=spark
    networks:
      - app-tier

    
  cassandra:
    image: 'bitnami/cassandra:latest'
    #image: docker.io/bitnami/cassandra:4.1
    #image: cassandra:latest
    ports:
      - '7000:7000'
      - '127.0.0.1:9042:9042'
    volumes:
      #- 'cassandra_data:/bitnami'
      - ".:/opt/cassandra"
    environment:
      - CASSANDRA_SEEDS=cassandra
      - CASSANDRA_PASSWORD_SEEDER=yes
      - CASSANDRA_PASSWORD=cassandra
    networks:
      - app-tier ```
pxy2qtax

pxy2qtax1#

Docker容器在自己的网络中运行,因此当您连接到容器时,需要指定要连接的网络。
在本例中,您将网络命名为app-tier,因此在命令中使用--network app-tier指定网络。
此外,您还需要指定要连接的容器的名称。您可以从docker ps输出中找到容器的名称。
如果你感兴趣,Apache Cassandra官方网站上的Quickstart Guide有在Docker中运行Cassandra的详细步骤。
最后,我强烈建议你先花一些时间学习Docker,这样你就能了解基本知识。否则,您将浪费大量时间遇到与Cassandra或Spark无关的其他简单问题。干杯!

相关问题