Будучи новичком в Apache Spark, столкнулся с проблемой при получении данных Cassandra в 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);
Этот запрос не фильтрует данные на сервере cassandra. В то время как этот оператор java выполняет свою стрельбу по памяти и, наконец, выдает исключение spark java.lang.OutOfMemoryError. Запрос должен отфильтровывать данные на сервере cassandra, а не на стороне клиента, как указано в https://github.com/datastax/spark-cassandra-connector/blob/master/doc/3_selection.md.
Пока я выполняю запрос с фильтрами на cassandra cqlsh, он работает нормально, но выполнение запроса без фильтра (предложение where) дает ожидаемый тайм-аут. Итак, ясно, что spark не применяет фильтры на стороне клиента.
SparkConf conf = new SparkConf();
conf.setAppName("Test");
conf.setMaster("local[8]");
conf.set("spark.cassandra.connection.host", "192.168.1.15")
Почему фильтры применяются на стороне клиента и как можно улучшить применение фильтров на стороне сервера.
Как мы можем настроить искровой кластер поверх кластера cassandra на платформе Windows?