0
我的cassandra CF具有日期和id作爲分區鍵。 查詢時我只知道日期,所以我遍歷了id的範圍。Cassandra Spark連接器
我的問題圍繞着連接器如何執行下面的代碼。
SparkDriver代碼看起來像 -
SparkConf conf = new SparkConf().setAppName("DemoApp")
.conf.setMaster("local[*]")
.set("spark.cassandra.connection.host", "10.*.*.*")
.set("spark.cassandra.connection.port", "*");
JavaSparkContext sc = new JavaSparkContext(conf);
SparkContextJavaFunctions javaFunctions = CassandraJavaUtil.javaFunctions(sc);
String date = "23012017";
for(String id : idlist) {
JavaRDD<CassandraRow> cassandraRowsRDD =
javaFunctions.cassandraTable("datakeyspace", "sample2")
.where("date = ?",date)
.where("id = ? ", id)
.select("data");
cassandraRowsRDDList.add(cassandraRowsRDD);
}
List<CassandraRow> collectAllRows = new ArrayList<CassandraRow>();
for(JavaRDD<CassandraRow> rdd : cassandraRowsRDDList){
//do transformations
collectAllRows.addAll(rdd.collect());
}
1)所有我想在IDLIST問我是否循環首先,說IDLIST有1000元,這可能是不斷增加的,這將是有效的?每個選擇查詢如何分佈在集羣中?特別是如何維護Cassandra DB連接?
2)在我的驅動程序中循環結束後,我將所有行放入List中,然後對每行應用轉換並過濾掉重複項。這是否也會通過集羣上的火花傳播,還是會發生在駕駛員側。
請幫助。