apachespark:javapairdd Cogroup函数为wrappers提供$iterable,如何遍历它?
我使用的是ApacheSpark1.1.0。在实现过程中,我在apachespark:javapairdd Cogroup函数为wrappers提供$iterable,如何遍历它?,java,apache-spark,Java,Apache Spark,我使用的是ApacheSpark1.1.0。在实现过程中,我在javapairdd上调用cogroup javapairdd返回的结果是格式的 有人知道如何在Java中迭代wrappers$iterable?我曾尝试将其强制转换为Iterable或JavaIterableRapPerserializer,但它们都抛出了ClassCastException 代码是: javapairdd mtpairdd的结果类型为Tuple2 JavaPairRDD mcPairRDD的结果类型为Tuple2
javapairdd
上调用cogroup
javapairdd返回的结果是
格式的
有人知道如何在Java中迭代wrappers$iterable
?我曾尝试将其强制转换为Iterable或JavaIterableRapPerserializer,但它们都抛出了ClassCastException
代码是:
javapairdd mtpairdd的结果类型为Tuple2
JavaPairRDD mcPairRDD的结果类型为Tuple2
或
但所有类型强制转换选项都抛出异常
谢谢,
Nitin如果不使用原始类型
JavaPairdd
和列表
,编译器可以帮助您找到真正的问题。您将对象转换为错误的类型。以下是我对您的代码的修复:
JavaPairRDD<String, Tuple2<String, ClassMTObj>> mcPairRDD = null;
JavaPairRDD<String, Tuple2<String, ClassMCObj>> mtPairRDD = null;
JavaPairRDD<String, Tuple2<Iterable<Tuple2<String, ClassMTObj>>, Iterable<Tuple2<String, ClassMCObj>>>> mCmTPairRDD
= mcPairRDD.cogroup(mtPairRDD, 100);
List<Tuple2<String, Tuple2<Iterable<Tuple2<String, ClassMTObj>>, Iterable<Tuple2<String, ClassMCObj>>>>> lst = mCmTPairRDD.collect();
for (Tuple2<String, Tuple2<Iterable<Tuple2<String, ClassMTObj>>, Iterable<Tuple2<String, ClassMCObj>>>> kv : lst) {
String key = kv._1();
Iterable<Tuple2<String, ClassMTObj>> v1 = kv._2()._1();
Iterable<Tuple2<String, ClassMCObj>> v2 = kv._2()._2();
for (Tuple2<String, ClassMTObj> kv1 : v1) {
//...
}
for (Tuple2<String, ClassMCObj> kv2 : v2) {
//...
}
}
JavaPairRDD-mcPairRDD=null;
javapairdd mtpairdd=null;
javapairdd mcmtpairdd
=mcpairdd.cogroup(mtpairdd,100);
List lst=mCmTPairRDD.collect();
用于(Tuple2 kv:lst){
串键=千伏。_1();
Iterable v1=kv._2()._1();
Iterable v2=kv._2()._2();
用于(Tuple2 kv1:v1){
//...
}
用于(Tuple2 kv2:v2){
//...
}
}
此处似乎缺少一些内容:“JavaPairdd返回的结果格式为。”请尝试单击帖子下方的“编辑”链接,并将该部分放在后面的勾号中。@Paul:我已经完成了编辑。
Iterable mcBean = (Iterable) obj2._1()
JavaIterableWrapperSerializer mcBean = (JavaIterableWrapperSerializer) obj2._1();
JavaPairRDD<String, Tuple2<String, ClassMTObj>> mcPairRDD = null;
JavaPairRDD<String, Tuple2<String, ClassMCObj>> mtPairRDD = null;
JavaPairRDD<String, Tuple2<Iterable<Tuple2<String, ClassMTObj>>, Iterable<Tuple2<String, ClassMCObj>>>> mCmTPairRDD
= mcPairRDD.cogroup(mtPairRDD, 100);
List<Tuple2<String, Tuple2<Iterable<Tuple2<String, ClassMTObj>>, Iterable<Tuple2<String, ClassMCObj>>>>> lst = mCmTPairRDD.collect();
for (Tuple2<String, Tuple2<Iterable<Tuple2<String, ClassMTObj>>, Iterable<Tuple2<String, ClassMCObj>>>> kv : lst) {
String key = kv._1();
Iterable<Tuple2<String, ClassMTObj>> v1 = kv._2()._1();
Iterable<Tuple2<String, ClassMCObj>> v2 = kv._2()._2();
for (Tuple2<String, ClassMTObj> kv1 : v1) {
//...
}
for (Tuple2<String, ClassMCObj> kv2 : v2) {
//...
}
}