tjava面试题网站:www.javaoffers.com
uple1Rdd.cogroup(tuple2Rdd) : 该方法针对的是元组之间的操作(RDD里面的元素是tuple对象,这里我简述为元组),否者无效,该元组是kv 对出现,cogroup方法的操作逻辑是:如果元组的k相同,则收集他们对应的v, 返回的类型为Array[(K, (Iterable[V], Iterable[V],*))] 一个数组类型,数组中的每个元素为元组Tuple,元组中的元素为(K,T(元组)),在T中存放着多个迭代器,每个迭代器(每个分区只等让一个迭代器对应在T中)对应一个分区并封装配到对应的v值,注意:在同一个partition中匹配到了多个v值会出现在对应的唯一迭代器中
案例:
结果:
案例2:
结果:
道理很简单:其实就是多个partition在进行cogroup时,会产生一个Array[K,T] 这样的一个对象,K为每partition中每个个元组的K,T中有多个Iterable, 每个Iterable中封装是 该Iterable对应的唯一partition中的 相同K的元组对应的V。每一个Iterable对已唯一的Partition