Skip to content

Commit 2feb068

Browse files
committed
Use intermediate abstract classes to work around SPARK-3266
1 parent d5f3e5d commit 2feb068

File tree

7 files changed

+23
-5
lines changed

7 files changed

+23
-5
lines changed

core/src/main/scala/org/apache/spark/api/java/JavaDoubleRDD.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ import org.apache.spark.storage.StorageLevel
3232
import org.apache.spark.util.StatCounter
3333
import org.apache.spark.util.Utils
3434

35-
class JavaDoubleRDD(val srdd: RDD[scala.Double]) extends JavaRDDLike[JDouble, JavaDoubleRDD] {
35+
class JavaDoubleRDD(val srdd: RDD[scala.Double])
36+
extends AbstractJavaRDDLike[JDouble, JavaDoubleRDD] {
3637

3738
override val classTag: ClassTag[JDouble] = implicitly[ClassTag[JDouble]]
3839

core/src/main/scala/org/apache/spark/api/java/JavaPairRDD.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import org.apache.spark.util.Utils
4444

4545
class JavaPairRDD[K, V](val rdd: RDD[(K, V)])
4646
(implicit val kClassTag: ClassTag[K], implicit val vClassTag: ClassTag[V])
47-
extends JavaRDDLike[(K, V), JavaPairRDD[K, V]] {
47+
extends AbstractJavaRDDLike[(K, V), JavaPairRDD[K, V]] {
4848

4949
override def wrapRDD(rdd: RDD[(K, V)]): JavaPairRDD[K, V] = JavaPairRDD.fromRDD(rdd)
5050

core/src/main/scala/org/apache/spark/api/java/JavaRDD.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import org.apache.spark.storage.StorageLevel
3030
import org.apache.spark.util.Utils
3131

3232
class JavaRDD[T](val rdd: RDD[T])(implicit val classTag: ClassTag[T])
33-
extends JavaRDDLike[T, JavaRDD[T]] {
33+
extends AbstractJavaRDDLike[T, JavaRDD[T]] {
3434

3535
override def wrapRDD(rdd: RDD[T]): JavaRDD[T] = JavaRDD.fromRDD(rdd)
3636

core/src/main/scala/org/apache/spark/api/java/JavaRDDLike.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ import org.apache.spark.rdd.RDD
3838
import org.apache.spark.storage.StorageLevel
3939
import org.apache.spark.util.Utils
4040

41+
/**
42+
* As a workaround for https://issues.scala-lang.org/browse/SI-8905, implementations
43+
* of JavaRDDLike should extend this dummy abstract class instead of directly inheriting
44+
* from the trait. See SPARK-3266 for additional details.
45+
*/
46+
private[spark] abstract class AbstractJavaRDDLike[T, This <: JavaRDDLike[T, This]]
47+
extends JavaRDDLike[T, This]
48+
4149
/**
4250
* Defines operations common to several Java RDD implementations.
4351
* Note that this trait is not intended to be implemented by user code.

streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaDStream.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import org.apache.spark.streaming.dstream.DStream
3636
* [[org.apache.spark.streaming.api.java.JavaPairDStream]].
3737
*/
3838
class JavaDStream[T](val dstream: DStream[T])(implicit val classTag: ClassTag[T])
39-
extends JavaDStreamLike[T, JavaDStream[T], JavaRDD[T]] {
39+
extends AbstractJavaDStreamLike[T, JavaDStream[T], JavaRDD[T]] {
4040

4141
override def wrapRDD(rdd: RDD[T]): JavaRDD[T] = JavaRDD.fromRDD(rdd)
4242

streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaDStreamLike.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ import org.apache.spark.streaming._
3434
import org.apache.spark.streaming.api.java.JavaDStream._
3535
import org.apache.spark.streaming.dstream.DStream
3636

37+
/**
38+
* As a workaround for https://issues.scala-lang.org/browse/SI-8905, implementations
39+
* of JavaDStreamLike should extend this dummy abstract class instead of directly inheriting
40+
* from the trait. See SPARK-3266 for additional details.
41+
*/
42+
private[streaming]
43+
abstract class AbstractJavaDStreamLike[T, This <: JavaDStreamLike[T, This, R],
44+
R <: JavaRDDLike[T, R]] extends JavaDStreamLike[T, This, R]
45+
3746
trait JavaDStreamLike[T, This <: JavaDStreamLike[T, This, R], R <: JavaRDDLike[T, R]]
3847
extends Serializable {
3948
implicit val classTag: ClassTag[T]

streaming/src/main/scala/org/apache/spark/streaming/api/java/JavaPairDStream.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import org.apache.spark.streaming.dstream.DStream
4545
class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
4646
implicit val kManifest: ClassTag[K],
4747
implicit val vManifest: ClassTag[V])
48-
extends JavaDStreamLike[(K, V), JavaPairDStream[K, V], JavaPairRDD[K, V]] {
48+
extends AbstractJavaDStreamLike[(K, V), JavaPairDStream[K, V], JavaPairRDD[K, V]] {
4949

5050
override def wrapRDD(rdd: RDD[(K, V)]): JavaPairRDD[K, V] = JavaPairRDD.fromRDD(rdd)
5151

0 commit comments

Comments
 (0)