rdd不能转换为hadooprdd

kmbjn2e3  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(186)

我需要结合一些RDD的类型 RDD[(LongWritable, Text)] 在for循环中。出于某种原因,我必须将最终的RDD转换为 HadoopRDD[LongWritable, Text] ,但我有个例外:
java.lang.classcastexception:org.apache.spark.rdd.unionrdd不能转换为org.apache.spark.rdd.hadooprdd
如果不涉及工会的话,这种转变似乎很好。
代码如下:

var allRdd: RDD[(LongWritable, Text)] = null

  for (file <- fileList)
  {
      val rd = sc.hadoopFile(file.toString(), 
                           classOf[TextInputFormat], 
                           classOf[LongWritable], 
                           classOf[Text], 
                           sc.defaultMinPartitions);

      // this is fine
      // val hRdd = rd.asInstanceOf[HadoopRDD[LongWritable, Text]] 

      if ( allRdd == null)
      {
         allRdd = rd 
      }
      else 
      {
         allRdd = allRdd.union(rd)
      }
  }

   // this line throws the exception :
   // java.lang.ClassCastException: org.apache.spark.rdd.UnionRDD 
   //    cannot be cast to org.apache.spark.rdd.HadoopRDD
   val allHadoopRdd = allRdd.asInstanceOf[HadoopRDD[LongWritable, Text]]

有人能让我知道什么可能是错误的,有没有其他方法来结合RDD?谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题