Java 不能合并两个卡桑德拉贾瓦德<;卡桑德拉罗>;火花
由于从Cassandra查询数据受到限制,我尝试使用Spark逐批读取数据并将其存储在RDD中 然后我使用union函数添加所有RDD 这是我的密码Java 不能合并两个卡桑德拉贾瓦德<;卡桑德拉罗>;火花,java,apache-spark,cassandra-2.0,spark-cassandra-connector,Java,Apache Spark,Cassandra 2.0,Spark Cassandra Connector,由于从Cassandra查询数据受到限制,我尝试使用Spark逐批读取数据并将其存储在RDD中 然后我使用union函数添加所有RDD 这是我的密码 private void getDataFromCassandra(JavaSparkContext sc) { CassandraJavaRDD<CassandraRow> cassandraRDD = null ; CassandraJavaRDD<CassandraRow> cassandraRDD
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);
}
}
private void getDataFromCassandra(JavaSparkContext sc){
Cassandrajavard cassandraRDD=null;
Cassandrajavard cassandraRDD2=null;
虽然(某些条件)
cassandraRDD=CassandraJavaUtil
.javaFunctions(sc).cassandraTable(“dmp”,“table”).select(“abc”,“xyz”)
其中(“pid IN(“+sb+”)”);
if(cassandraRDD2==null){
cassandraRDD2=cassandraRDD;
}
否则{
cassandraRDD2=cassandraRDD2.union(cassandraRDD);
}
}
}
但在工会里,我犯了以下错误
类型不匹配:无法从JavaRDD转换为Cassandrajavard
尽管两个RDD的类型相似
因此1)我是否应使用铸造
cassandraRDD2 = (CassandraJavaRDD<CassandraRow>) cassandraRDD2.union(cassandraRDD);
cassandraRDD2=(cassandrajavard)cassandraRDD2.union(cassandraRDD);
2) 或者将其中一个RDD的类型更改为JavaRDD,问题发生的原因是: 方法:union(JavaRDD other)返回此RDD和另一个RDD的并集 返回值:JavaRDD 因此不匹配 因为根据:
因此,
union()
方法的返回值将与其类型匹配。在哪里设置cassandraRDD2
?似乎它总是空的。在if条件下,我将cassandraRDD2分配给cassandraRDD。如何执行null.isEmpty()
?因为这就是你在那里做的事情是的,我忘了把它改为if(cassandraRDD2==null),但是为什么我需要强制转换它呢?我省略了代码的一些部分,比如循环中运行的if和else条件,就像if语句是true一样,在cassandraRDD2将它分配给cassandraRDD之后,它将进入else部分。然后,我希望我清楚地知道,需要施压。我刚才做了绞刑。抱歉,谢谢你的回答。JavaRDD cassandraRDD2=sc.emptyRDD();JavaRDD cassandraRDD=sc.emptyRDD();我可以将这两个空RDD合并为cassandraRDD2=cassandraRDD2.union(cassandraRDD)?你应该能做到。
public class CassandraJavaRDD<R> extends JavaRDD<R> {
...
}
JavaRDD<CassandraRow> cassandraRDD = null;
JavaRDD<CassandraRow> cassandraRDD2 = null;