2016-01-21 76 views
1
import org.apache.spark.api.java.JavaRDD 
import org.apache.spark.rdd.RDD 
import scala.reflect.ClassTag 

class TestRDD[T: ClassTag](rdd: RDD[T]) extends JavaRDD(rdd) 

該聲明可從控制檯接受。但是在編譯時被拋出以下錯誤:沒有ClassTag可用於T

No ClassTag available for T 
[error] class TestRDD[T: ClassTag](rdd: RDD[T]) extends JavaRDD(rdd) 
[error]    ^
[error] one error found 
[error] (jobs/it:compileIncremental) Compilation failed 

回答

6

得到T的classtag我想你想要這樣的:

class TestRDD[T](rdd: List[T])(implicit c: ClassTag[T]) extends JavaRDD(rdd) 

使用implicit自動隱含ClassTag通用T

+0

我收到了同樣的錯誤。 – autodidacticon

1

由於JVM模板類型擦除,編譯器不能從rdd得到T類型的信息。

但鍵入T信息存儲在RDD類,也許你可以從RDD

0

嗯,這是尷尬的解決方案:

class TestRDD[T: ClassTag](rdd: RDD[T]) extends RDD[T](rdd: RDD[T]) 
相關問題