由于查询来自Cassandra的数据存在限制,我尝试使用Spark批量读取数据并将其存储在RDD中。
然后我使用union函数添加所有RDD。
这是我的代码。
private void getDataFromCassandra(JavaSparkContext sc) {
CassandraJavaRDD<CassandraRow> cassandraRDD = null ;
CassandraJavaRDD<CassandraRow> cassandraRDD2 = null;
While(Some Condition)
cassandraRDD = CassandraJavaUtil
.javaFunctions(sc).cassandraTable("dmp", "table").select("abc", "xyz")
.where("pid IN ('" + sb + "')");
if(cassandraRDD2==null){
cassandraRDD2=cassandraRDD;
}
else{
cassandraRDD2 = cassandraRDD2.union(cassandraRDD);
}
}
}
但在工会中,我收到了以下错误。
类型不匹配:无法从JavaRDD转换为CassandraJavaRDD
虽然RDD的两种类型都相似。
所以1)我应该使用Cast作为
cassandraRDD2 = (CassandraJavaRDD<CassandraRow>) cassandraRDD2.union(cassandraRDD);
2)或者将RDD之一的类型更改为JavaRDD
答案 0 :(得分:2)