Я распаковываю tar-файл в json, а затем сохраняю эти json-файлы в cassandra, используя spark (2.4.0) и cassandra (3.11).Я использую pyspark, используя докер-контейнер, и у меня работает cassandra.
У меня есть скрипт bash data_extractor.sh
в докере, который содержит
$SPARK_HOME/bin/spark-submit --packages datastax:spark-cassandra-connector:2.4.0-s_2.11 data_extractor.py -f $1
, и я запускаю докер, используя
docker run -it spark-docker data_extractor.sh data.tar
Когда я запускаю spark-submit;он выполняет распаковку, но не может подключиться к базе данных cassandra (я использовал cassandra-driver в pyspark и запустил cassandra, используя cassandra -f
)
Я получаю следующую ошибку:
Start building Cassandra schemas.
Traceback (most recent call last):
File "/app/data_extractor.py", line 83, in <module>
schema_builder = CassandraSchemaGenerator(keyspace)
File "/app/cql_schema_creator.py", line 8, in __init__
self.cluster_conn = self.cluster.connect()
File "cassandra/cluster.py", line 1278, in cassandra.cluster.Cluster.connect
File "cassandra/cluster.py", line 1314, in cassandra.cluster.Cluster.connect
File "cassandra/cluster.py", line 1301, in cassandra.cluster.Cluster.connect
File "cassandra/cluster.py", line 2802, in cassandra.cluster.ControlConnection.connect
File "cassandra/cluster.py", line 2845, in cassandra.cluster.ControlConnection._reconnect_internal
cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})
Я получаю сообщение об ошибке в следующем коде:
from cassandra.cluster import Cluster
class CassandraSchemaGenerator:
def __init__(self, keyspace):
self.keyspace = keyspace
self.cluster = Cluster(['127.0.0.1'], port=9042)
self.cluster_conn = self.cluster.connect()
Это мой файл Docker: https://pastebin.com/nSkxZ2Au
Мои вопросы:
Как я могу решить эту проблему, если я запускаю pyspark в docker и cassandra в локальном режиме?
Есть ли способ запустить и spark, и cassandra в одном контейнере и запускать их без ошибок?
Я что-то не так делаю в настройках кода Python и / или Cassandra?Если да, то как это решить?
Я пробовал несколько файлов Docker для достижения 2-го пункта, но не смог.Кроме того, я впервые использую искру и кассандру, поэтому считайте меня нубом.
Спасибо.