Я использую .setCassandraConf (c_options_conf), чтобы установить sparkSession для подключения кластера кассандры, как показано ниже.
Работает нормально:
val spark = SparkSession
.builder()
.appName("DatabaseMigrationUtility")
.config("spark.master",devProps.getString("deploymentMaster"))
.getOrCreate()
.setCassandraConf(c_options_conf)
Если я сохраню таблицу, используя объект записи данных, как показано нижеон указывает на сконфигурированный кластер и прекрасно сохраняет сохранение в Cassandra, как показано ниже
writeDfToCassandra(o_vals_df, key_space , "model_vals"); //working fine using o_vals_df.
Но если сказать, как показано ниже, он указывает на localhost вместо кластера cassandra и не может сохранить.
Неработает:
import spark.implicits._
val sc = spark.sparkContext
val audit_df = sc.parallelize(Seq(LogCaseClass(columnFamilyName, status,
error_msg,currentDate,currentTimeStamp, updated_user))).saveToCassandra(keyspace, columnFamilyName);
Выдает ошибку при попытке подключения localhost.
Ошибка:
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All
host(s) tried for query failed (tried: localhost/127.0.0.1:9042
(com.datastax.driver.core.exceptions.TransportException:
[localhost/127.0.0.1:9042] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:233)
Что здесь не так?Почему он указывает на локальный хост по умолчанию, несмотря на то, что для sparkSession установлено значение кластера cassandra и более ранний метод работает нормально.