我正在尝试使用 PySpark 和 Docker 构建一个容器化的小批量数据处理管道,之后处理的数据将存储在 Cassandra 中。我正在使用一个 docker-compose 文件来为 spark 和 Cassandra 拉取图像,我能够毫无错误地运行我的 pyspark 文件,但是在尝试运行 cassandra 行时出现错误,例如创建键空间和表,这就是我尝试的原因在容器中使用 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 ```
Docker 容器在自己的网络中运行,因此当您连接到容器时,您需要指定要连接的网络。
在您的情况下,您已将网络命名为
app-tier
,因此在您的命令中使用--network app-tier
指定网络。
此外,您还需要指定要连接的容器的名称。您可以从
docker ps
输出中找到容器的名称。
如果您有兴趣,Apache Cassandra 官方网站上的Quickstart Guide 有在 Docker 中运行 Cassandra 的详细步骤。
最后,我强烈建议您先花一些时间学习 Docker,以便了解基础知识。否则,您将浪费大量时间处理与 Cassandra 或 Spark 无关的其他简单问题。干杯!