获取Scala / Spark中的RDD类型

时间:2017-05-08 22:15:49

标签: scala apache-spark rdd

我不确定类型是否在这里使用是正确的词,但是假设我有以下类型的RDD

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

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

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

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

其中RDD [(Long,Array [(Long,Double)])]在运行时基于另一个相同类型的RDD动态发现。 那么有没有办法从RDD获取运行时的这个值?

1 个答案:

答案 0 :(得分:1)

您可以使用Scala的TypeTag s

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)