Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不能合并两个卡桑德拉贾瓦德<;卡桑德拉罗>;火花_Java_Apache Spark_Cassandra 2.0_Spark Cassandra Connector - Fatal编程技术网

Java 不能合并两个卡桑德拉贾瓦德<;卡桑德拉罗>;火花

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

由于从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);
    }
}             
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;