2017-05-08 72 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)