0

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.!

Antwort

0

Es gibt eine bessere Möglichkeit, dies durch Spark Cassandra-Stecker zur Verfügung zu stellen. Sie können eine RDD (Datum, ID) erstellen und dann joinWithCassandraTable Funktion für Spalten Datum und ID aufrufen. Connector macht es smart alle Daten werden nur von den Arbeitern geholt und auch ohne shuffle wird jeder Worker die Daten nur für das Datum und die ID abrufen, die er hat.

Verwandte Themen