anishshri-db commented on code in PR #47104:
URL: https://github.com/apache/spark/pull/47104#discussion_r1663348445
##########
sql/core/src/main/scala/org/apache/spark/sql/execution/streaming/IncrementalExecution.scala:
##########
@@ -187,23 +187,33 @@ class IncrementalExecution(
}
}
- object WriteStatefulOperatorMetadataRule extends SparkPlanPartialRule {
+ // Planning rule used to record the state schema for the first run and
validate state schema
+ // changes across query runs.
+ object StateSchemaAndOperatorMetadataRule extends SparkPlanPartialRule {
override val rule: PartialFunction[SparkPlan, SparkPlan] = {
+ // In the case of TransformWithStateExec, we want to collect this
StateSchema
+ // filepath, and write this path out in the OperatorStateMetadata file
case stateStoreWriter: StateStoreWriter if isFirstBatch =>
+ val stateSchemaVersion = stateStoreWriter match {
+ case _: TransformWithStateExec => sparkSession.sessionState.conf.
+
getConf(SQLConf.STREAMING_TRANSFORM_WITH_STATE_OP_STATE_SCHEMA_VERSION)
+ case _ => 2
+ }
+ val stateSchemaPaths =
+ stateStoreWriter.validateAndMaybeEvolveStateSchema(
+ hadoopConf,
+ currentBatchId,
+ stateSchemaVersion)
+ // write out the state schema paths to the metadata file
val metadata = stateStoreWriter.operatorStateMetadata()
+ // TODO: Populate metadata with stateSchemaPaths if metadata version
is v2
val metadataWriter = new OperatorStateMetadataWriter(new Path(
checkpointLocation,
stateStoreWriter.getStateInfo.operatorId.toString), hadoopConf)
metadataWriter.write(metadata)
stateStoreWriter
- }
- }
-
- // Planning rule used to record the state schema for the first run and
validate state schema
- // changes across query runs.
- object StateSchemaValidationRule extends SparkPlanPartialRule {
- override val rule: PartialFunction[SparkPlan, SparkPlan] = {
case statefulOp: StatefulOperator if isFirstBatch =>
- statefulOp.validateAndMaybeEvolveStateSchema(hadoopConf)
+ statefulOp.
+ validateAndMaybeEvolveStateSchema(hadoopConf, currentBatchId,
stateSchemaVersion = 2)
Review Comment:
we can't set to 2 here right ? we should just pass the stateSchemaVersion we
populated above ?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]