Skip to content

Commit d8669bc

Browse files
committed
correctly pass through target platforms with the new operators from the builder
1 parent 26f939c commit d8669bc

1 file changed

Lines changed: 44 additions & 36 deletions

File tree

wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,14 @@ abstract class BasicDataQuantaBuilder[This <: DataQuantaBuilder[_, Out], Out](im
636636

637637
override def withTargetPlatform(platform: Platform): This = {
638638
this.targetPlatforms += platform
639-
this.asInstanceOf[This]
639+
this.asInstanceOf[This]
640+
}
641+
642+
def getTargetPlatforms(): ListBuffer[Platform] = this.targetPlatforms
643+
644+
def applyTargetPlatforms(op: DataQuanta[Out], targetPlatforms: ListBuffer[Platform]) = {
645+
targetPlatforms.foreach(platform => op.withTargetPlatforms(platform))
646+
op
640647
}
641648

642649
def withUdfJarOf(cls: Class[_]): This = this.withUdfJar(ReflectionUtils.getDeclaringJar(cls))
@@ -682,7 +689,7 @@ class UnarySourceDataQuantaBuilder[This <: DataQuantaBuilder[_, Out], Out](sourc
682689
(implicit javaPlanBuilder: JavaPlanBuilder)
683690
extends BasicDataQuantaBuilder[This, Out] {
684691

685-
override protected def build: DataQuanta[Out] = javaPlanBuilder.planBuilder.load(source)(this.classTag)
692+
override protected def build: DataQuanta[Out] = applyTargetPlatforms(javaPlanBuilder.planBuilder.load(source)(this.classTag), this.getTargetPlatforms())
686693

687694
}
688695

@@ -747,7 +754,7 @@ class MapDataQuantaBuilder[In, Out](inputDataQuanta: DataQuantaBuilder[_, In],
747754
this
748755
}
749756

750-
override protected def build = inputDataQuanta.dataQuanta().mapJava(udf, this.udfLoadProfileEstimator)
757+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().mapJava(udf, this.udfLoadProfileEstimator), this.getTargetPlatforms())
751758

752759
}
753760

@@ -762,7 +769,7 @@ class ProjectionDataQuantaBuilder[In, Out](inputDataQuanta: DataQuantaBuilder[_,
762769
(implicit javaPlanBuilder: JavaPlanBuilder)
763770
extends BasicDataQuantaBuilder[ProjectionDataQuantaBuilder[In, Out], Out] {
764771

765-
override protected def build = inputDataQuanta.dataQuanta().project(fieldNames.toSeq)
772+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().project(fieldNames.toSeq), this.getTargetPlatforms())
766773

767774
}
768775

@@ -834,9 +841,9 @@ class FilterDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T], udf:
834841
this
835842
}
836843

837-
override protected def build = inputDataQuanta.dataQuanta().filterJava(
844+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().filterJava(
838845
udf, this.sqlUdf, this.selectivity, this.udfLoadProfileEstimator
839-
)
846+
), this.getTargetPlatforms())
840847

841848
}
842849

@@ -905,7 +912,7 @@ class SortDataQuantaBuilder[T, Key](inputDataQuanta: DataQuantaBuilder[_, T],
905912
}
906913

907914
override protected def build =
908-
inputDataQuanta.dataQuanta().sortJava(keyUdf)(this.keyTag)
915+
applyTargetPlatforms(inputDataQuanta.dataQuanta().sortJava(keyUdf)(this.keyTag), this.getTargetPlatforms())
909916

910917
}
911918

@@ -968,9 +975,9 @@ class FlatMapDataQuantaBuilder[In, Out](inputDataQuanta: DataQuantaBuilder[_, In
968975
this
969976
}
970977

971-
override protected def build = inputDataQuanta.dataQuanta().flatMapJava(
978+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().flatMapJava(
972979
udf, this.selectivity, this.udfLoadProfileEstimator
973-
)
980+
), this.getTargetPlatforms())
974981

975982
}
976983

@@ -1034,9 +1041,9 @@ class MapPartitionsDataQuantaBuilder[In, Out](inputDataQuanta: DataQuantaBuilder
10341041
this
10351042
}
10361043

1037-
override protected def build = inputDataQuanta.dataQuanta().mapPartitionsJava(
1044+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().mapPartitionsJava(
10381045
udf, this.selectivity, this.udfLoadProfileEstimator
1039-
)
1046+
), this.getTargetPlatforms())
10401047

10411048
}
10421049

@@ -1102,7 +1109,7 @@ class SampleDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T], sampl
11021109
}
11031110

11041111
override protected def build =
1105-
inputDataQuanta.dataQuanta().sampleDynamicJava(sampleSizeFunction, this.datasetSize, this.seed, this.sampleMethod)
1112+
applyTargetPlatforms(inputDataQuanta.dataQuanta().sampleDynamicJava(sampleSizeFunction, this.datasetSize, this.seed, this.sampleMethod), this.getTargetPlatforms())
11061113

11071114
}
11081115

@@ -1166,9 +1173,7 @@ class ReduceByDataQuantaBuilder[Key, T](inputDataQuanta: DataQuantaBuilder[_, T]
11661173
this
11671174
}
11681175

1169-
override protected def build =
1170-
inputDataQuanta.dataQuanta().reduceByKeyJava(keyUdf, udf, this.udfLoadProfileEstimator)
1171-
1176+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().reduceByKeyJava(keyUdf, udf, this.udfLoadProfileEstimator), this.getTargetPlatforms())
11721177
}
11731178

11741179
/**
@@ -1214,8 +1219,7 @@ class GroupByDataQuantaBuilder[Key, T](inputDataQuanta: DataQuantaBuilder[_, T],
12141219
this
12151220
}
12161221

1217-
override protected def build =
1218-
inputDataQuanta.dataQuanta().groupByKeyJava(keyUdf, this.keyUdfLoadProfileEstimator)
1222+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().groupByKeyJava(keyUdf, this.keyUdfLoadProfileEstimator), this.getTargetPlatforms())
12191223

12201224
}
12211225

@@ -1227,7 +1231,7 @@ class GroupByDataQuantaBuilder[Key, T](inputDataQuanta: DataQuantaBuilder[_, T],
12271231
class GlobalGroupDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T])(implicit javaPlanBuilder: JavaPlanBuilder)
12281232
extends BasicDataQuantaBuilder[GlobalGroupDataQuantaBuilder[T], java.lang.Iterable[T]] {
12291233

1230-
override protected def build = inputDataQuanta.dataQuanta().group()
1234+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().group(), this.getTargetPlatforms())
12311235

12321236
}
12331237

@@ -1269,7 +1273,7 @@ class GlobalReduceDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T],
12691273
this
12701274
}
12711275

1272-
override protected def build = inputDataQuanta.dataQuanta().reduceJava(udf, this.udfLoadProfileEstimator)
1276+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().reduceJava(udf, this.udfLoadProfileEstimator), this.getTargetPlatforms())
12731277

12741278
}
12751279

@@ -1286,7 +1290,7 @@ class UnionDataQuantaBuilder[T](inputDataQuanta0: DataQuantaBuilder[_, T],
12861290

12871291
override def getOutputTypeTrap = inputDataQuanta0.outputTypeTrap
12881292

1289-
override protected def build = inputDataQuanta0.dataQuanta().union(inputDataQuanta1.dataQuanta())
1293+
override protected def build = applyTargetPlatforms(inputDataQuanta0.dataQuanta().union(inputDataQuanta1.dataQuanta()), this.getTargetPlatforms())
12901294

12911295
}
12921296

@@ -1303,7 +1307,7 @@ class IntersectDataQuantaBuilder[T](inputDataQuanta0: DataQuantaBuilder[_, T],
13031307

13041308
override def getOutputTypeTrap = inputDataQuanta0.outputTypeTrap
13051309

1306-
override protected def build = inputDataQuanta0.dataQuanta().intersect(inputDataQuanta1.dataQuanta())
1310+
override protected def build = applyTargetPlatforms(inputDataQuanta0.dataQuanta().intersect(inputDataQuanta1.dataQuanta()), this.getTargetPlatforms())
13071311

13081312
}
13091313

@@ -1427,7 +1431,7 @@ class JoinDataQuantaBuilder[In0, In1, Key](inputDataQuanta0: DataQuantaBuilder[_
14271431
})
14281432

14291433
override protected def build =
1430-
inputDataQuanta0.dataQuanta().joinJava(keyUdf0, inputDataQuanta1.dataQuanta(), keyUdf1)(inputDataQuanta1.classTag, this.keyTag)
1434+
applyTargetPlatforms(inputDataQuanta0.dataQuanta().joinJava(keyUdf0, inputDataQuanta1.dataQuanta(), keyUdf1)(inputDataQuanta1.classTag, this.keyTag), this.getTargetPlatforms())
14311435

14321436
}
14331437

@@ -1452,8 +1456,8 @@ class DLTrainingDataQuantaBuilder[In0, In1](inputDataQuanta0: DataQuantaBuilder[
14521456
}
14531457

14541458
override protected def build =
1455-
inputDataQuanta0.dataQuanta()
1456-
.dlTrainingJava(model, option, inputDataQuanta1.dataQuanta())(inputDataQuanta1.classTag)
1459+
applyTargetPlatforms(inputDataQuanta0.dataQuanta()
1460+
.dlTrainingJava(model, option, inputDataQuanta1.dataQuanta())(inputDataQuanta1.classTag), this.getTargetPlatforms())
14571461
}
14581462

14591463
/**
@@ -1474,8 +1478,9 @@ class PredictDataQuantaBuilder[In1, Out](inputDataQuanta0: DataQuantaBuilder[_,
14741478
}
14751479

14761480
override protected def build =
1481+
applyTargetPlatforms(
14771482
inputDataQuanta0.dataQuanta().
1478-
predictJava(inputDataQuanta1.dataQuanta())(inputDataQuanta1.classTag, ClassTag.apply(outClass))
1483+
predictJava(inputDataQuanta1.dataQuanta())(inputDataQuanta1.classTag, ClassTag.apply(outClass)), this.getTargetPlatforms())
14791484
}
14801485

14811486
/**
@@ -1587,7 +1592,7 @@ class CoGroupDataQuantaBuilder[In0, In1, Key](inputDataQuanta0: DataQuantaBuilde
15871592
}
15881593

15891594
override protected def build =
1590-
inputDataQuanta0.dataQuanta().coGroupJava(keyUdf0, inputDataQuanta1.dataQuanta(), keyUdf1)(inputDataQuanta1.classTag, this.keyTag)
1595+
applyTargetPlatforms(inputDataQuanta0.dataQuanta().coGroupJava(keyUdf0, inputDataQuanta1.dataQuanta(), keyUdf1)(inputDataQuanta1.classTag, this.keyTag), this.getTargetPlatforms())
15911596

15921597
}
15931598

@@ -1609,7 +1614,7 @@ class CartesianDataQuantaBuilder[In0, In1](inputDataQuanta0: DataQuantaBuilder[_
16091614
}
16101615

16111616
override protected def build =
1612-
inputDataQuanta0.dataQuanta().cartesian(inputDataQuanta1.dataQuanta())(inputDataQuanta1.classTag)
1617+
applyTargetPlatforms(inputDataQuanta0.dataQuanta().cartesian(inputDataQuanta1.dataQuanta())(inputDataQuanta1.classTag), this.getTargetPlatforms())
16131618

16141619
}
16151620

@@ -1627,7 +1632,7 @@ class ZipWithIdDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T])
16271632
this.outputTypeTrap.dataSetType = dataSetType[RT2[_, _]]
16281633
}
16291634

1630-
override protected def build = inputDataQuanta.dataQuanta().zipWithId
1635+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().zipWithId, this.getTargetPlatforms())
16311636

16321637
}
16331638

@@ -1643,7 +1648,7 @@ class DistinctDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T])
16431648
// Reuse the input TypeTrap to enforce type equality between input and output.
16441649
override def getOutputTypeTrap: TypeTrap = inputDataQuanta.outputTypeTrap
16451650

1646-
override protected def build = inputDataQuanta.dataQuanta().distinct
1651+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().distinct, this.getTargetPlatforms())
16471652

16481653
}
16491654

@@ -1661,7 +1666,7 @@ class CountDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T])
16611666
this.outputTypeTrap.dataSetType = dataSetType[java.lang.Long]
16621667
}
16631668

1664-
override protected def build = inputDataQuanta.dataQuanta().count
1669+
override protected def build = applyTargetPlatforms(inputDataQuanta.dataQuanta().count, this.getTargetPlatforms())
16651670

16661671
}
16671672

@@ -1689,7 +1694,8 @@ class CustomOperatorDataQuantaBuilder[T](operator: Operator,
16891694
val dataQuanta = javaPlanBuilder.planBuilder.customOperator(operator, inputDataQuanta.map(_.dataQuanta()): _*)
16901695
buildCache.cache(dataQuanta)
16911696
}
1692-
buildCache(outputIndex)
1697+
1698+
applyTargetPlatforms(buildCache(outputIndex), this.getTargetPlatforms())
16931699
}
16941700

16951701
}
@@ -1767,10 +1773,10 @@ class DoWhileDataQuantaBuilder[T, ConvOut](inputDataQuanta: DataQuantaBuilder[_,
17671773
this
17681774
}
17691775

1770-
override protected def build =
1776+
override protected def build = applyTargetPlatforms(
17711777
inputDataQuanta.dataQuanta().doWhileJava[ConvOut](
17721778
conditionUdf, dataQuantaBodyBuilder, this.numExpectedIterations, this.udfLoadProfileEstimator
1773-
)(this.convOutClassTag)
1779+
)(this.convOutClassTag), this.getTargetPlatforms())
17741780

17751781

17761782
/**
@@ -1808,10 +1814,11 @@ class RepeatDataQuantaBuilder[T](inputDataQuanta: DataQuantaBuilder[_, T],
18081814
// TODO: We could improve by combining the TypeTraps in the body loop.
18091815

18101816
override protected def build =
1817+
applyTargetPlatforms(
18111818
inputDataQuanta.dataQuanta().repeat(numRepetitions, startDataQuanta => {
18121819
val loopStartbuilder = new FakeDataQuantaBuilder(startDataQuanta)
18131820
bodyBuilder(loopStartbuilder).dataQuanta()
1814-
})
1821+
}), this.getTargetPlatforms())
18151822

18161823
}
18171824

@@ -1832,7 +1839,7 @@ class FakeDataQuantaBuilder[T](_dataQuanta: DataQuanta[T])(implicit javaPlanBuil
18321839
*
18331840
* @return the created and partially configured [[DataQuanta]]
18341841
*/
1835-
override protected def build: DataQuanta[T] = _dataQuanta
1842+
override protected def build: DataQuanta[T] = applyTargetPlatforms(_dataQuanta, this.getTargetPlatforms())
18361843
}
18371844

18381845
/**
@@ -1852,9 +1859,10 @@ class LogisticRegressionDataQuantaBuilder(inputDataQuanta0: DataQuantaBuilder[_,
18521859
}
18531860

18541861
override protected def build: DataQuanta[LogisticRegressionModel] =
1862+
applyTargetPlatforms(
18551863
inputDataQuanta0
18561864
.dataQuanta()
1857-
.trainLogisticRegression(inputDataQuanta1.dataQuanta(), fitIntercept)
1865+
.trainLogisticRegression(inputDataQuanta1.dataQuanta(), fitIntercept), this.getTargetPlatforms())
18581866

18591867

18601868
}

0 commit comments

Comments
 (0)