Scala Spark UnionRDD无法强制转换为HadoopRDD
我需要在for循环中组合一些类型为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
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()方法。