【发布时间】:2015-09-17 11:16:38
【问题描述】:
作为 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 集群??
【问题讨论】:
标签: java apache-spark out-of-memory cassandra-2.0 spark-cassandra-connector