@@ -46,7 +46,11 @@ setMethod("initialize", "PipelinedRDD", function(.Object, prev, func, jrdd_val)
46
46
.Object @ env $ isCached <- FALSE
47
47
.Object @ env $ isCheckpointed <- FALSE
48
48
.Object @ env $ jrdd_val <- jrdd_val
49
+ # This tracks if jrdd_val is serialized
49
50
.Object @ env $ serialized <- prev @ env $ serialized
51
+
52
+ # NOTE: We use prev_serialized to track if prev_jrdd is serialized
53
+ # prev_serialized is used during the delayed computation of JRDD in getJRDD
50
54
.Object @ prev <- prev
51
55
52
56
isPipelinable <- function (rdd ) {
@@ -58,12 +62,17 @@ setMethod("initialize", "PipelinedRDD", function(.Object, prev, func, jrdd_val)
58
62
# This transformation is the first in its stage:
59
63
.Object @ func <- func
60
64
.Object @ prev_jrdd <- getJRDD(prev )
65
+ # Since this is the first step in the pipeline, the prev_serialized
66
+ # is same as serialized here.
67
+ .Object @ env $ prev_serialized <- .Object @ env $ serialized
61
68
} else {
62
69
pipelinedFunc <- function (split , iterator ) {
63
70
func(split , prev @ func(split , iterator ))
64
71
}
65
72
.Object @ func <- pipelinedFunc
66
73
.Object @ prev_jrdd <- prev @ prev_jrdd # maintain the pipeline
74
+ # Get if the prev_jrdd was serialized from the parent RDD
75
+ .Object @ env $ prev_serialized <- prev @ env $ prev_serialized
67
76
}
68
77
69
78
.Object
@@ -116,7 +125,7 @@ setMethod("getJRDD", signature(rdd = "PipelinedRDD"),
116
125
rddRef <- newJObject(" edu.berkeley.cs.amplab.sparkr.RRDD" ,
117
126
callJMethod(prev_jrdd , " rdd" ),
118
127
serializedFuncArr ,
119
- rdd @ env $ serialized ,
128
+ rdd @ env $ prev_serialized ,
120
129
depsBin ,
121
130
packageNamesArr ,
122
131
as.character(.sparkREnv [[" libname" ]]),
@@ -126,7 +135,7 @@ setMethod("getJRDD", signature(rdd = "PipelinedRDD"),
126
135
rddRef <- newJObject(" edu.berkeley.cs.amplab.sparkr.StringRRDD" ,
127
136
callJMethod(prev_jrdd , " rdd" ),
128
137
serializedFuncArr ,
129
- rdd @ env $ serialized ,
138
+ rdd @ env $ prev_serialized ,
130
139
depsBin ,
131
140
packageNamesArr ,
132
141
as.character(.sparkREnv [[" libname" ]]),
0 commit comments