cogroup
두 가지 를 얻는 함수를 선언하고 싶습니다 RDD
. 실제로 그것은 interSectionByKey
. 아래 코드는 컴파일 할 수 없습니다.
def getRetain[K, V](activeUserRdd : RDD[(K, V)], newUserRdd : RDD[(K, V)]): RDD[(K, V)] ={
activeUserRdd.cogroup(newUserRdd).flatMapValues{
x => Option((if (!x._1.isEmpty && !x._2.isEmpty) x._2.head else null).asInstanceOf[V])
}
}
오류:
value cogroup is not a member of org.apache.spark.rdd.RDD[(K, V)]
나는 (K, V)
miss [(K, V)]
가에서 선언 된 실제와 일치 한다고 생각 cogroup
하지만 내 함수에서 선언하는 올바른 방법은 무엇입니까?
적용 ClassTag
이 삭제 유형을 확인하기 위해 입력 유형의 K
및 V
런타임에 액세스 할 수 있습니다. 이것은 Scala의 유형 삭제 때문 입니다.
scala> import scala.reflect.ClassTag
import scala.reflect.ClassTag
scala> def getRetain[K : ClassTag, V : ClassTag](activeUserRdd : RDD[(K, V)], newUserRdd : RDD[(K, V)]): RDD[(K, V)] ={
| activeUserRdd.cogroup(newUserRdd).flatMapValues{
| x => Option((if (!x._1.isEmpty && !x._2.isEmpty) x._2.head else null).asInstanceOf[V])
| }
| }
getRetain: [K, V](activeUserRdd: org.apache.spark.rdd.RDD[(K, V)], newUserRdd: org.apache.spark.rdd.RDD[(K, V)])(implicit evidence$1: scala.reflect.ClassTag[K], implicit evidence$2: scala.reflect.ClassTag[V])org.apache.spark.rdd.RDD[(K, V)]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다