17
17
18
18
package org .apache .spark .streaming .api .java
19
19
20
- import java .util .{List => JList }
21
20
import java .lang .{Long => JLong }
21
+ import java .util .{List => JList }
22
22
23
23
import scala .collection .JavaConversions ._
24
24
import scala .reflect .ClassTag
25
25
26
- import org .apache .spark .streaming ._
27
- import org .apache .spark .streaming .StreamingContext ._
28
- import org .apache .spark .api .java .function .{Function => JFunction , Function2 => JFunction2 }
29
- import org .apache .spark .Partitioner
26
+ import com .google .common .base .Optional
27
+ import org .apache .hadoop .conf .Configuration
30
28
import org .apache .hadoop .mapred .{JobConf , OutputFormat }
31
29
import org .apache .hadoop .mapreduce .{OutputFormat => NewOutputFormat }
32
- import org .apache .hadoop . conf . Configuration
33
- import org .apache .spark .api .java .{JavaUtils , JavaPairRDD }
30
+ import org .apache .spark . Partitioner
31
+ import org .apache .spark .api .java .{JavaPairRDD , JavaUtils }
34
32
import org .apache .spark .api .java .JavaPairRDD ._
35
- import org .apache .spark .storage . StorageLevel
36
- import com . google . common . base . Optional
33
+ import org .apache .spark .api . java . JavaSparkContext . fakeClassTag
34
+ import org . apache . spark . api . java . function .{ Function => JFunction , Function2 => JFunction2 }
37
35
import org .apache .spark .rdd .RDD
38
- import org .apache .spark .rdd .PairRDDFunctions
36
+ import org .apache .spark .storage .StorageLevel
37
+ import org .apache .spark .streaming ._
38
+ import org .apache .spark .streaming .StreamingContext ._
39
39
import org .apache .spark .streaming .dstream .DStream
40
40
41
41
/**
@@ -169,8 +169,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
169
169
mergeCombiners : JFunction2 [C , C , C ],
170
170
partitioner : Partitioner
171
171
): JavaPairDStream [K , C ] = {
172
- implicit val cm : ClassTag [C ] =
173
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [C ]]
172
+ implicit val cm : ClassTag [C ] = fakeClassTag
174
173
dstream.combineByKey(createCombiner, mergeValue, mergeCombiners, partitioner)
175
174
}
176
175
@@ -185,8 +184,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
185
184
partitioner : Partitioner ,
186
185
mapSideCombine : Boolean
187
186
): JavaPairDStream [K , C ] = {
188
- implicit val cm : ClassTag [C ] =
189
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [C ]]
187
+ implicit val cm : ClassTag [C ] = fakeClassTag
190
188
dstream.combineByKey(createCombiner, mergeValue, mergeCombiners, partitioner, mapSideCombine)
191
189
}
192
190
@@ -454,8 +452,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
454
452
*/
455
453
def updateStateByKey [S ](updateFunc : JFunction2 [JList [V ], Optional [S ], Optional [S ]])
456
454
: JavaPairDStream [K , S ] = {
457
- implicit val cm : ClassTag [S ] =
458
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [S ]]
455
+ implicit val cm : ClassTag [S ] = fakeClassTag
459
456
dstream.updateStateByKey(convertUpdateStateFunction(updateFunc))
460
457
}
461
458
@@ -472,8 +469,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
472
469
updateFunc : JFunction2 [JList [V ], Optional [S ], Optional [S ]],
473
470
numPartitions : Int )
474
471
: JavaPairDStream [K , S ] = {
475
- implicit val cm : ClassTag [S ] =
476
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [S ]]
472
+ implicit val cm : ClassTag [S ] = fakeClassTag
477
473
dstream.updateStateByKey(convertUpdateStateFunction(updateFunc), numPartitions)
478
474
}
479
475
@@ -491,8 +487,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
491
487
updateFunc : JFunction2 [JList [V ], Optional [S ], Optional [S ]],
492
488
partitioner : Partitioner
493
489
): JavaPairDStream [K , S ] = {
494
- implicit val cm : ClassTag [S ] =
495
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [S ]]
490
+ implicit val cm : ClassTag [S ] = fakeClassTag
496
491
dstream.updateStateByKey(convertUpdateStateFunction(updateFunc), partitioner)
497
492
}
498
493
@@ -502,8 +497,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
502
497
* 'this' DStream without changing the key.
503
498
*/
504
499
def mapValues [U ](f : JFunction [V , U ]): JavaPairDStream [K , U ] = {
505
- implicit val cm : ClassTag [U ] =
506
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [U ]]
500
+ implicit val cm : ClassTag [U ] = fakeClassTag
507
501
dstream.mapValues(f)
508
502
}
509
503
@@ -525,8 +519,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
525
519
* of partitions.
526
520
*/
527
521
def cogroup [W ](other : JavaPairDStream [K , W ]): JavaPairDStream [K , (JList [V ], JList [W ])] = {
528
- implicit val cm : ClassTag [W ] =
529
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
522
+ implicit val cm : ClassTag [W ] = fakeClassTag
530
523
dstream.cogroup(other.dstream).mapValues(t => (seqAsJavaList(t._1), seqAsJavaList((t._2))))
531
524
}
532
525
@@ -538,8 +531,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
538
531
other : JavaPairDStream [K , W ],
539
532
numPartitions : Int
540
533
): JavaPairDStream [K , (JList [V ], JList [W ])] = {
541
- implicit val cm : ClassTag [W ] =
542
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
534
+ implicit val cm : ClassTag [W ] = fakeClassTag
543
535
dstream.cogroup(other.dstream, numPartitions)
544
536
.mapValues(t => (seqAsJavaList(t._1), seqAsJavaList((t._2))))
545
537
}
@@ -552,8 +544,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
552
544
other : JavaPairDStream [K , W ],
553
545
partitioner : Partitioner
554
546
): JavaPairDStream [K , (JList [V ], JList [W ])] = {
555
- implicit val cm : ClassTag [W ] =
556
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
547
+ implicit val cm : ClassTag [W ] = fakeClassTag
557
548
dstream.cogroup(other.dstream, partitioner)
558
549
.mapValues(t => (seqAsJavaList(t._1), seqAsJavaList((t._2))))
559
550
}
@@ -563,8 +554,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
563
554
* Hash partitioning is used to generate the RDDs with Spark's default number of partitions.
564
555
*/
565
556
def join [W ](other : JavaPairDStream [K , W ]): JavaPairDStream [K , (V , W )] = {
566
- implicit val cm : ClassTag [W ] =
567
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
557
+ implicit val cm : ClassTag [W ] = fakeClassTag
568
558
dstream.join(other.dstream)
569
559
}
570
560
@@ -573,8 +563,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
573
563
* Hash partitioning is used to generate the RDDs with `numPartitions` partitions.
574
564
*/
575
565
def join [W ](other : JavaPairDStream [K , W ], numPartitions : Int ): JavaPairDStream [K , (V , W )] = {
576
- implicit val cm : ClassTag [W ] =
577
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
566
+ implicit val cm : ClassTag [W ] = fakeClassTag
578
567
dstream.join(other.dstream, numPartitions)
579
568
}
580
569
@@ -586,8 +575,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
586
575
other : JavaPairDStream [K , W ],
587
576
partitioner : Partitioner
588
577
): JavaPairDStream [K , (V , W )] = {
589
- implicit val cm : ClassTag [W ] =
590
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
578
+ implicit val cm : ClassTag [W ] = fakeClassTag
591
579
dstream.join(other.dstream, partitioner)
592
580
}
593
581
@@ -597,8 +585,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
597
585
* number of partitions.
598
586
*/
599
587
def leftOuterJoin [W ](other : JavaPairDStream [K , W ]): JavaPairDStream [K , (V , Optional [W ])] = {
600
- implicit val cm : ClassTag [W ] =
601
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
588
+ implicit val cm : ClassTag [W ] = fakeClassTag
602
589
val joinResult = dstream.leftOuterJoin(other.dstream)
603
590
joinResult.mapValues{case (v, w) => (v, JavaUtils .optionToOptional(w))}
604
591
}
@@ -612,8 +599,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
612
599
other : JavaPairDStream [K , W ],
613
600
numPartitions : Int
614
601
): JavaPairDStream [K , (V , Optional [W ])] = {
615
- implicit val cm : ClassTag [W ] =
616
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
602
+ implicit val cm : ClassTag [W ] = fakeClassTag
617
603
val joinResult = dstream.leftOuterJoin(other.dstream, numPartitions)
618
604
joinResult.mapValues{case (v, w) => (v, JavaUtils .optionToOptional(w))}
619
605
}
@@ -626,8 +612,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
626
612
other : JavaPairDStream [K , W ],
627
613
partitioner : Partitioner
628
614
): JavaPairDStream [K , (V , Optional [W ])] = {
629
- implicit val cm : ClassTag [W ] =
630
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
615
+ implicit val cm : ClassTag [W ] = fakeClassTag
631
616
val joinResult = dstream.leftOuterJoin(other.dstream, partitioner)
632
617
joinResult.mapValues{case (v, w) => (v, JavaUtils .optionToOptional(w))}
633
618
}
@@ -653,8 +638,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
653
638
other : JavaPairDStream [K , W ],
654
639
numPartitions : Int
655
640
): JavaPairDStream [K , (Optional [V ], W )] = {
656
- implicit val cm : ClassTag [W ] =
657
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
641
+ implicit val cm : ClassTag [W ] = fakeClassTag
658
642
val joinResult = dstream.rightOuterJoin(other.dstream, numPartitions)
659
643
joinResult.mapValues{case (v, w) => (JavaUtils .optionToOptional(v), w)}
660
644
}
@@ -668,8 +652,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
668
652
other : JavaPairDStream [K , W ],
669
653
partitioner : Partitioner
670
654
): JavaPairDStream [K , (Optional [V ], W )] = {
671
- implicit val cm : ClassTag [W ] =
672
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [W ]]
655
+ implicit val cm : ClassTag [W ] = fakeClassTag
673
656
val joinResult = dstream.rightOuterJoin(other.dstream, partitioner)
674
657
joinResult.mapValues{case (v, w) => (JavaUtils .optionToOptional(v), w)}
675
658
}
@@ -749,8 +732,7 @@ class JavaPairDStream[K, V](val dstream: DStream[(K, V)])(
749
732
new JavaDStream [(K , V )](dstream)
750
733
}
751
734
752
- override val classTag : ClassTag [(K , V )] =
753
- implicitly[ClassTag [Tuple2 [_, _]]].asInstanceOf [ClassTag [Tuple2 [K , V ]]]
735
+ override val classTag : ClassTag [(K , V )] = fakeClassTag
754
736
}
755
737
756
738
object JavaPairDStream {
@@ -759,10 +741,8 @@ object JavaPairDStream {
759
741
}
760
742
761
743
def fromJavaDStream [K , V ](dstream : JavaDStream [(K , V )]): JavaPairDStream [K , V ] = {
762
- implicit val cmk : ClassTag [K ] =
763
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [K ]]
764
- implicit val cmv : ClassTag [V ] =
765
- implicitly[ClassTag [AnyRef ]].asInstanceOf [ClassTag [V ]]
744
+ implicit val cmk : ClassTag [K ] = fakeClassTag
745
+ implicit val cmv : ClassTag [V ] = fakeClassTag
766
746
new JavaPairDStream [K , V ](dstream.dstream)
767
747
}
768
748
0 commit comments