Mein Cassandra CF hat Datum und ID als Partition Key. Während der Abfrage weiß ich nur das Datum, also ich Schleife über den Bereich der IDs.Cassandra Spark Connector
Meine Frage dreht sich darum, wie der Connector den folgenden Code ausführt.
SparkDriver Code wie folgt aussieht -
SparkConf conf = new SparkConf().setAppName("DemoApp")
.conf.setMaster("local[*]")
.set("spark.cassandra.connection.host", "10.*.*.*")
.set("spark.cassandra.connection.port", "*");
JavaSparkContext sc = new JavaSparkContext(conf);
SparkContextJavaFunctions javaFunctions = CassandraJavaUtil.javaFunctions(sc);
String date = "23012017";
for(String id : idlist) {
JavaRDD<CassandraRow> cassandraRowsRDD =
javaFunctions.cassandraTable("datakeyspace", "sample2")
.where("date = ?",date)
.where("id = ? ", id)
.select("data");
cassandraRowsRDDList.add(cassandraRowsRDD);
}
List<CassandraRow> collectAllRows = new ArrayList<CassandraRow>();
for(JavaRDD<CassandraRow> rdd : cassandraRowsRDDList){
//do transformations
collectAllRows.addAll(rdd.collect());
}
1) Zunächst einmal ich, wenn ich Schleife über die idlist fragen wollte, sagen idlist 1000 Elemente aufweist, die jemals sein könnte steigt, wird dies effizient sein? Wie wird jede Select-Abfrage im Cluster verteilt? Wie werden insbesondere Cassandra-DB-Verbindungen gepflegt?
2) In meinem Treiberprogramm Nach dem Durchschleifen setze ich alle Zeilen in die Liste und verwende dann Transformationen auf jede Zeile und filtere die Duplikate heraus. Wird dies auch durch Funken auf dem Cluster verteilt oder erfolgt dies auf der Fahrerseite?
Bitte helfen.!