作为 apache spark 的新手,在 Spark 上获取 Cassandra 数据时遇到了一些问题。
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")
为什么在客户端应用过滤器以及如何改进在服务器端应用过滤器。
我们如何在 windows 平台上的 cassandra 集群之上配置 spark 集群?