Warum Apache Spark die Filter auf dem Client durchführt

Neuling bei Apache Spark, Probleme beim Abrufen von Cassandra-Daten bei Spark.

List<String> dates = Arrays.asList("2015-01-21","2015-01-22");
CassandraJavaRDD<A> aRDD = CassandraJavaUtil.javaFunctions(sc).
                    cassandraTable("testing", "cf_text",CassandraJavaUtil.mapRowTo(A.class, colMap)).
                    where("Id=? and date IN ?","Open",dates);

Diese Abfrage filtert keine Daten auf dem Kassettenserver. Während diese Java-Anweisung ihren Shooting ausführt, wird der Speicher aufgebraucht und schließlich die Ausnahmebedingung spark java.lang.OutOfMemoryError ausgelöst. Die Abfrage sollte Daten auf dem Cassandra-Server anstatt auf der Clientseite herausfiltern, wie unter @ angegebehttps: //github.com/datastax/spark-cassandra-connector/blob/master/doc/3_selection.m.

Während ich die Abfrage mit Filtern auf der Cassandra-CQL-SH durchführe, funktioniert sie einwandfrei, aber wenn ich die Abfrage ohne den Filter durchführe (where-Klausel), wird eine erwartete Zeitüberschreitung angezeigt. Es ist also klar, dass der Funke die Filter nicht auf der Clientseite anwendet.

SparkConf conf = new SparkConf();
            conf.setAppName("Test");
            conf.setMaster("local[8]");
            conf.set("spark.cassandra.connection.host", "192.168.1.15")

Warum werden Filter auf der Clientseite angewendet und wie kann die Anwendung der Filter auf der Serverseite verbessert werden?

Wie können wir den Spark-Cluster über dem Cassandra-Cluster auf der Windows-Plattform konfigurieren?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage