Правильное решение должно заключаться в выполнении соединения между вашими данными и таблицей Casasndra. Существует функция joinWithCassandraTable , которая делает то, что вам нужно - вы просто генерируете RDD Tuple2
, который содержит значения для p1
& p2
, а затем вызываете таблицу joinWithCassandra, что-то вроде этого (не проверено, взято из моего примера здесь ):
JavaRDD<Tuple2<Integer, Integer>> trdd = cartesian.map(new Function<Tuple2<DateTime, Integer>, Tuple2<Integer, Integer>>() {
@Override
public Tuple2<Integer, Integer> call(Tuple2<DateTime, Integer> tuple2) throws Exception {
return new Tuple2<Integer, Integer>(tuple2._1(), tuple2._2());
}
});
CassandraJavaPairRDD<Tuple2<Integer, Integer>, Tuple2<Integer, String>> joinedRDD =
trdd.joinWithCassandraTable("test", "jtest",
someColumns("p1", "p2"), someColumns("p1", "p2"),
mapRowToTuple(Integer.class, String.class), mapTupleToRow(Integer.class));
// perform counting here...