I verwenden:Wie wird die Nummer der Partition beim Lesen von Daten aus Cassandra gesteuert?
- cassandra 2.1.12 - 3 Knoten
- spark 1,6-3 Knoten
- spark cassandra Stecker 1,6
I verwenden Token in Cassandra (nicht vnodes).
Ich schreibe einen einfachen Job zum Lesen von Daten aus einer Cassandra-Tabelle und die Anzeige seiner Zähletabelle hat etwa 70 Millionen Zeilen und es dauert 15 Minuten dafür.
Wenn ich Daten lesen und Anzahl der Partition einer RDD überprüfen ist irgendwo um 21000, die zu groß ist. Wie kontrolliert man diese Nummer?
Ich habe versucht splitCount
, split.size.in.mbs
, aber sie zeigen mir die gleiche Anzahl von Partitionen.
Irgendwelche Vorschläge?
import org.apache.spark.{SparkContext, SparkConf}
import com.datastax.spark.connector._
import org.apache.spark.sql.cassandra.CassandraSQLContext
import org.apache.spark.sql.cassandra._
import org.apache.spark.sql
import java.sql.DriverManager
import java.sql.Connection
object Hi {
def main(args: Array[String])
{
val conf = new SparkConf(true).set("spark.cassandra.connection.host", "172.16.4.196").set("spark.cassandra.input.split.size_in_mb","64")
val sc = new SparkContext(conf)
val rdd = sc.cassandraTable("cw","usedcareventsbydatecookienew")
println("hello world" + rdd.partitions)
println("hello world" + rdd.count)
}
}
dies ist mein Code für die Referenz. Ich betreibe nodetool compact jetzt ich in der Lage bin Anzahl der Partition zu kontrollieren, aber immer noch der gesamte Prozess fast 6 Minuten nimmt was meiner Meinung nach zu hoch ist jeder Vorschlag für Verbesserungen
mit steuern i nur rund 70 Partitionen haben sollte aber es zeigt mir 21000 Partition und spark.cassandra.input.split.size_in_mb macht auch das gleiche hoffe ich – deenbandhu