Reputation: 3967
I am running spark-cassandra-connector and hitting a weird issue: I run the spark-shell as:
bin/spark-shell --packages datastax:spark-cassandra-connector:2.0.0-M2-s_2.1
Then I run the following commands:
import com.datastax.spark.connector._
val rdd = sc.cassandraTable("test_spark", "test")
println(rdd.first)
# CassandraRow{id: 2, name: john, age: 29}
Problem is that following command gives an error:
rdd.take(1).foreach(println)
# CassandraRow{id: 2, name: john, age: 29}
rdd.take(2).foreach(println)
# Caused by: com.datastax.driver.core.exceptions.UnavailableException: Not enough replicas available for query at consistency LOCAL_ONE (1 required but only 0 alive)
# at com.datastax.driver.core.exceptions.UnavailableException.copy(UnavailableException.java:128)
# at com.datastax.driver.core.Responses$Error.asException(Responses.java:114)
# at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:467)
# at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1012)
# at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:935)
# at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
And the following command just hangs:
println(rdd.count)
My Cassandra keyspace seems to have the right replication factor:
describe test_spark;
CREATE KEYSPACE test_spark WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'} AND durable_writes = true;
How to fix both the above errors?
Upvotes: 3
Views: 6378
Reputation: 16430
I assume you hit the issue with SimpleStrategy and multi-dc when using LOCAL_ONE
(spark connector default) consistency. It will look for a node in the local DC to make the request to but theres a chance that all the replicas exist in a different DC and wont meet the requirement. (CASSANDRA-12053)
If you change your consistency level (input.consistency.level
to ONE
) I think it will be resolved. You should also really consider using the network topology strategy instead.
Upvotes: 2