1616import io .openlineage .client .OpenLineage .RunEvent .EventType ;
1717import io .openlineage .client .OpenLineageClientUtils ;
1818import io .openlineage .spark .agent .EventEmitter ;
19+ import io .openlineage .spark .agent .NuEventEmitter ;
1920import io .openlineage .spark .agent .filters .EventFilterUtils ;
2021import io .openlineage .spark .agent .util .PlanUtils ;
2122import io .openlineage .spark .agent .util .ScalaConversionUtils ;
2223import io .openlineage .spark .api .OpenLineageContext ;
2324import io .openlineage .spark .api .naming .JobNameBuilder ;
25+
2426import java .time .ZoneOffset ;
2527import java .time .ZonedDateTime ;
2628import java .util .List ;
2729import java .util .Optional ;
2830import java .util .Stack ;
2931import java .util .concurrent .atomic .AtomicBoolean ;
32+
3033import lombok .extern .slf4j .Slf4j ;
3134import org .apache .spark .scheduler .ActiveJob ;
3235import org .apache .spark .scheduler .JobFailed ;
@@ -50,7 +53,6 @@ class SparkSQLExecutionContext implements ExecutionContext {
5053 private static final String SPARK_PROCESSING_TYPE_BATCH = "BATCH" ;
5154 private static final String SPARK_PROCESSING_TYPE_STREAMING = "STREAMING" ;
5255 private final long executionId ;
53- private String jobName ;
5456 private final OpenLineageContext olContext ;
5557 private final EventEmitter eventEmitter ;
5658 private final OpenLineageRunEventBuilder runEventBuilder ;
@@ -88,30 +90,28 @@ public void start(SparkListenerSQLExecutionStart startEvent) {
8890 "OpenLineage received Spark event that is configured to be skipped: SparkListenerSQLExecutionStart" );
8991 // return;
9092 }
91-
9293 olContext .setActiveJobId (activeJobId );
93- // We shall skip this START event, focusing on the first SparkListenerJobStart event to be the START, because of the presence of the job nurn
9494 // only one START event is expected, in case it was already sent with jobStart, we send running
95- // EventType eventType = emittedOnJobStart ? RUNNING : START;
96- // emittedOnSqlExecutionStart = true;
97-
98- // RunEvent event =
99- // runEventBuilder.buildRun(
100- // OpenLineageRunEventContext.builder()
101- // .applicationParentRunFacet(buildApplicationParentFacet())
102- // .event(startEvent)
103- // .runEventBuilder(
104- // olContext
105- // .getOpenLineage()
106- // .newRunEventBuilder()
107- // .eventTime(toZonedTime(startEvent.time()))
108- // .eventType(eventType))
109- // .jobBuilder(buildJob())
110- // .jobFacetsBuilder(getJobFacetsBuilder(olContext.getQueryExecution().get()))
111- // .build());
112-
113- // log.debug("Posting event for start {}: {}", executionId, event);
114- // eventEmitter .emit(event);
95+ EventType eventType = emittedOnJobStart ? RUNNING : START ;
96+ emittedOnSqlExecutionStart = true ;
97+
98+ RunEvent event =
99+ runEventBuilder .buildRun (
100+ OpenLineageRunEventContext .builder ()
101+ .applicationParentRunFacet (buildApplicationParentFacet ())
102+ .event (startEvent )
103+ .runEventBuilder (
104+ olContext
105+ .getOpenLineage ()
106+ .newRunEventBuilder ()
107+ .eventTime (toZonedTime (startEvent .time ()))
108+ .eventType (eventType ))
109+ .jobBuilder (buildJob ())
110+ .jobFacetsBuilder (getJobFacetsBuilder (olContext .getQueryExecution ().get ()))
111+ .build ());
112+
113+ log .debug ("Posting event for start {}: {}" , executionId , event );
114+ NuEventEmitter .emit (event , eventEmitter );
115115 }
116116
117117 @ Override
@@ -160,7 +160,7 @@ public void end(SparkListenerSQLExecutionEnd endEvent) {
160160 if (log .isDebugEnabled ()) {
161161 log .debug ("Posting event for end {}: {}" , executionId , OpenLineageClientUtils .toJson (event ));
162162 }
163- eventEmitter .emit (event );
163+ NuEventEmitter .emit (event , eventEmitter );
164164 }
165165
166166 // TODO: not invoked until https://github.com/OpenLineage/OpenLineage/issues/470 is completed
@@ -191,7 +191,7 @@ public void start(SparkListenerStageSubmitted stageSubmitted) {
191191 .build ());
192192
193193 log .debug ("Posting event for stage submitted {}: {}" , executionId , event );
194- eventEmitter .emit (event );
194+ NuEventEmitter .emit (event , eventEmitter );
195195 }
196196
197197 // TODO: not invoked until https://github.com/OpenLineage/OpenLineage/issues/470 is completed
@@ -221,7 +221,7 @@ public void end(SparkListenerStageCompleted stageCompleted) {
221221 .build ());
222222
223223 log .debug ("Posting event for stage completed {}: {}" , executionId , event );
224- eventEmitter .emit (event );
224+ NuEventEmitter .emit (event , eventEmitter );
225225 }
226226
227227 @ Override
@@ -244,12 +244,6 @@ public void setActiveJob(ActiveJob activeJob) {
244244 @ Override
245245 public void start (SparkListenerJobStart jobStart ) {
246246 log .debug ("SparkListenerJobStart - executionId: {}" , executionId );
247- try {
248- jobName = jobStart .properties ().getProperty ("spark.job.name" );
249- } catch (RuntimeException e ) {
250- log .info ("spark.job.name property not found in the context" );
251- }
252- olContext .setJobNurn (jobName );
253247 if (!olContext .getQueryExecution ().isPresent ()) {
254248 log .info (NO_EXECUTION_INFO , olContext );
255249 return ;
@@ -262,7 +256,6 @@ public void start(SparkListenerJobStart jobStart) {
262256 // only one START event is expected, in case it was already sent with sqlExecutionStart, we send
263257 // running
264258 EventType eventType = emittedOnSqlExecutionStart ? RUNNING : START ;
265- emittedOnSqlExecutionStart = true ;
266259 emittedOnJobStart = true ;
267260
268261 RunEvent event =
@@ -281,7 +274,7 @@ public void start(SparkListenerJobStart jobStart) {
281274 .build ());
282275
283276 log .debug ("Posting event for start {}: {}" , executionId , event );
284- eventEmitter .emit (event );
277+ NuEventEmitter .emit (event , eventEmitter );
285278 }
286279
287280 @ Override
@@ -330,7 +323,7 @@ public void end(SparkListenerJobEnd jobEnd) {
330323 .build ());
331324
332325 log .debug ("Posting event for end {}: {}" , executionId , event );
333- eventEmitter .emit (event );
326+ NuEventEmitter .emit (event , eventEmitter );
334327 }
335328
336329 @ Override
0 commit comments