Mon Cassandra CF a une date et un identifiant comme clé de partition. lors de l'interrogation Je ne connais que la date, donc je boucle sur la gamme de ID.Cassandra Spark Connector
Ma question tourne autour de la façon dont le connecteur exécute le code suivant.
code SparkDriver ressemble -
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) tout ce que je voulais d'abord demander si je boucle sur le idlist, disons idlist a 1000 éléments qui pourraient augmenter jamais, sera-ce efficace? comment chaque requête de sélection est distribuée dans le cluster? Surtout comment les connexions DB de Cassandra seront maintenues?
2) Dans mon programme pilote Après boucle sur je suis en train de toutes les lignes de liste, puis appliquer des transformations à chaque ligne et filtrer les doublons. Est-ce que cela sera également distribué par une étincelle sur le groupe ou cela aura-t-il lieu aux côtés du conducteur?
aide Veuillez.!