Scala Spark UnionRDD无法强制转换为HadoopRDD

Scala Spark UnionRDD无法强制转换为HadoopRDD,scala,hadoop,apache-spark,rdd,Scala,Hadoop,Apache Spark,Rdd,我需要在for循环中组合一些类型为RDD[(LongWritable,Text)]的RDD。出于某种原因,我必须将最终的RDD转换为HadoopRDD[LongWritable,Text],但我得到了一个例外: java.lang.ClassCastException:org.apache.spark.rdd.UnionRDD不能强制转换为org.apache.spark.rdd.HadoopRDD 如果不涉及工会的话,这种转变似乎很好 代码如下: var allRdd: RDD[(LongW

我需要在for循环中组合一些类型为
RDD[(LongWritable,Text)]
的RDD。出于某种原因,我必须将最终的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]]
var allRdd:RDD[(LongWritable,Text)]=null

对于(文件)您的结果需要是
HadoopRDD
有什么特殊原因吗?是的,我需要在HadoopRDD上使用mapPartitionsWithInputSplit()方法。您的结果需要是
HadoopRDD
有什么特殊原因吗?是的,我需要在HadoopRDD上使用mapPartitionsWithInputSplit()方法。