2017-02-24 1 views
1

I Funken cassandra-Anschluss leite und eine seltsame Frage schlagen: Ich betreibe das Funken Shell als:Nicht genügend Kopien für Abfrage auf Konsistenz LOCAL_ONE (1 erforderlich, aber nur 0 lebendig)

bin/spark-shell --packages datastax:spark-cassandra-connector:2.0.0-M2-s_2.1 

dann laufe ich die folgenden Befehle:

import com.datastax.spark.connector._ 
val rdd = sc.cassandraTable("test_spark", "test") 
println(rdd.first) 
# CassandraRow{id: 2, name: john, age: 29} 

Problem, dass Befehl finden Sie einen Fehler gibt:

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) 

Und der folgende Befehl hängt nur:

println(rdd.count) 

Mein Cassandra Schlüsselraum scheint den richtigen Replikationsfaktor zu haben:

describe test_spark; 
CREATE KEYSPACE test_spark WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'} AND durable_writes = true; 

Wie sowohl die obigen Fehler zu beheben?

Antwort

1

Ich nehme an, dass Sie das Problem mit SimpleStrategy und Multi-DC bei der Verwendung LOCAL_ONE (Zündkerze Standard) Konsistenz. Es sucht nach einem Knoten im lokalen Domänencontroller, um die Anforderung zu stellen, aber es besteht die Möglichkeit, dass alle Replikate in einem anderen Domänencontroller vorhanden sind und die Anforderung nicht erfüllen. (CASSANDRA-12053)

Wenn Sie change your consistency level (input.consistency.level bis ONE) Ich denke, es wird gelöst werden. Sie sollten auch in Betracht ziehen, stattdessen die Netzwerktopologiestrategie zu verwenden.

Verwandte Themen