我需要结合一些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?谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!