【问题标题】:Get Type of RDD in Scala/Spark在 Scala/Spark 中获取 RDD 的类型
【发布时间】:2017-10-07 01:45:13
【问题描述】:

我不确定 type 是否适合在这里使用,但是假设我有一个以下类型的 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 获取这个值?

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案1】:

    你可以使用 Scala 的TypeTags

    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)
    

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 1970-01-01
      • 2016-03-13
      • 2017-10-10
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      相关资源
      最近更新 更多