2017-05-08 44 views
2

我不知道,如果类型是在这里使用合适的词,但让说我有以下类型获取RDD的类型在斯卡拉/星火

RDD[(Long, Array[(Long, Double)])] 

现在的RDD如果我有RDD,我如何在运行时找到它的类型(如上所述)?

我基本上想要比较两个RDD,在运行时查看它们是否存储相同类型的数据(它自己的值可能不同),还有另一种方法可以做到吗?此外,我想用下面的代码

sc.getPersistentRDDs(0).asInstanceOf[RDD[(Long, Array[(Long, Double)])]] 
获得缓存RDD作为RDD类型的实例

其中RDD [(长,数组[(长,双人间)])]已经发现在运行时动态基于另一种相同类型的RDD。 那么有没有办法从RDD运行时获得这个值?

回答

1

您可以使用Scala的TypeTag小号

import scala.reflect.runtime.universe._ 
def checkEqualParameters [T1, T2](x : T1, y : T2)(implicit type1 : TypeTag[T1], type2 : TypeTag[T2]) = { 
    type1.tpe.typeArgs == type2.tpe.typeArgs 
} 

,然后比较

checkEqualParameters (rdd1, rdd2)