私はSpark経由で書き込みをしようとしています。 私は、クラスタ内の6つのノードを持っており、それに私がデータを書き込みしたい鍵空間を作った:Cassandra ClusterはSpark経由でノードを見ることができません
: 私はスパークから書き込みをしようとしているCREATE KEYSPACE traffic WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '2'} AND durable_writes = true;
、私はこの種のエラーを取得しています
:私はnodetool describecluster
を実行する場合、私はこの結果を得、また
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark
import org.apache.spark.storage.StorageLevel
import org.apache.spark.sql.types.{StructType, StructField, DateType, IntegerType};
object ff {
def main(string: Array[String]) {
val conf = new SparkConf()
.set("spark.cassandra.connection.host", "127.0.0.1")
.set("spark.cassandra.connection.host","ONE")
.setMaster("local[4]")
.setAppName("ff")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") // Use first line of all files as header
.option("inferSchema", "true")
.load("test.csv")
df.registerTempTable("ff_table")
//df.printSchema()
df.count
time {
df.write
.format("org.apache.spark.sql.cassandra")
.options(Map("table" -> "ff_table", "keyspace" -> "traffic"))
.save()
}
def time[A](f: => A) = {
val s = System.nanoTime
val ret = f
println("time: " + (System.nanoTime - s)/1e6 + "ms")
ret
}
}
}
:
16/08/17 16:14:57 ERROR QueryExecutor: Failed to execute: [email protected]
com.datastax.driver.core.exceptions.UnavailableException: Not enough replicas available for query at consistency ONE (1 required but only 0 alive)
この は私が正確に何をやっているコードのスニペットです
Cluster Information:
Name: Test Cluster
Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
bf6c3ae7-5c8b-3e5d-9794-8e34bee9278f: [127.0.0.1, 127.0.0.2, 127.0.0.3, 127.0.0.4, 127.0.0.5, 127.0.0.6]
私はreplication_factor
の行にCLIに挿入しよう:ので、すべてのノードがお互いを見ることができる、2、それが働いています。 なぜSparkは、Sparkからデータを挿入しようとしている間にノードが見えないのか、それ以外は何も挿入できないのですか?
Hmだから、その量のノードをローカルでテストすることは不可能だと言っていますか? 私がCassandraに保存しようとしているcsvは約3.2GB、私のSSDには約30GBの空き容量があります。あなたが数えしようとすると、その数を上回ってはいけません。あるいは、コピーを開始し、後でエラー「メモリ不足」を出すか、それとも何かを思い出す必要があります。私は正しい? 私も4つのノードと 'replication_factor':2で試しましたが、彼は切断していました:http://stackoverflow.com/questions/38978886/cant-write-to-cluster-if-replication-factor-is-greater-than -1?noredirect = 1#comment65315513_38978886 –
詳細については私の解答を編集します – RussS
後日、6つのノードに 'replication_factor:1'と書くことができました。私は書き込みの一貫性のレベルで実験を始めましたが、すべてが崩壊しました。今はこのエラーのために私は全く書くことができません。 また、すべてのノードはSSDの1つのパーティションにありますが、私がHDDの別のパーティションを作成し、そこに3つのノード(SSDに3つ、HDDに3つ)を設定すると、何かできますか?私はちょうどこれがなぜ働いていたのか分かりませんし、突然デフォルトにロールバックしていないのです。また、上記のコメントで私があなたに与えた2番目のスレッドを見たことがありますか? –