@@ -275,10 +275,12 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
275
275
if (const auto stat = CanReadHybrid (sort.Input ().Item (0 ))) {
276
276
if (stat->front () <= sizeLimit && stat->back () <= chunksLimit) {
277
277
YQL_CLOG (INFO, ProviderYt) << " Sort on DQ with equivalent input size " << stat->front () << " and " << stat->back () << " chunks." ;
278
- PushStat (" Hybrid_Sort_try" );
278
+ PushStat (" HybridTry" );
279
+ PushHybridStat (" Try" , node.Raw ()->Content ());
279
280
return MakeYtSortByDq (sort, ctx);
280
281
}
281
- PushStat (" Hybrid_Sort_over_limits" );
282
+ PushStat (" HybridSkipOverLimits" );
283
+ PushHybridStat (" SkipOverLimits" , node.Raw ()->Content ());
282
284
}
283
285
}
284
286
}
@@ -294,10 +296,12 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
294
296
if (const auto stat = CanReadHybrid (merge.Input ().Item (0 ))) {
295
297
if (stat->front () <= sizeLimit && stat->back () <= chunksLimit) {
296
298
YQL_CLOG (INFO, ProviderYt) << " Merge on DQ with equivalent input size " << stat->front () << " and " << stat->back () << " chunks." ;
297
- PushStat (" Hybrid_Merge_try" );
299
+ PushStat (" HybridTry" );
300
+ PushHybridStat (" Try" , node.Raw ()->Content ());
298
301
return MakeYtSortByDq (merge, ctx);
299
302
}
300
- PushStat (" Hybrid_Merge_over_limits" );
303
+ PushStat (" HybridSkipOverLimits" );
304
+ PushHybridStat (" SkipOverLimits" , node.Raw ()->Content ());
301
305
}
302
306
}
303
307
}
@@ -347,7 +351,8 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
347
351
if (stat->front () <= sizeLimit && stat->back () <= chunksLimit) {
348
352
if (CanExecuteInHybrid (map.Mapper ().Ptr (), chunksLimit, sizeLimit)) {
349
353
YQL_CLOG (INFO, ProviderYt) << " Map on DQ with equivalent input size " << stat->front () << " and " << stat->back () << " chunks." ;
350
- PushStat (" Hybrid_Map_try" );
354
+ PushStat (" HybridTry" );
355
+ PushHybridStat (" Try" , node.Raw ()->Content ());
351
356
TSyncMap syncList;
352
357
const auto & paths = map.Input ().Item (0 ).Paths ();
353
358
for (auto i = 0U ; i < paths.Size (); ++i) {
@@ -430,7 +435,8 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
430
435
.Done ();
431
436
}
432
437
}
433
- PushStat (" Hybrid_Map_over_limits" );
438
+ PushStat (" HybridOverLimits" );
439
+ PushHybridStat (" SkipOverLimits" , node.Raw ()->Content ());
434
440
}
435
441
}
436
442
@@ -626,12 +632,14 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
626
632
if (CanExecuteInHybrid (reduce.Reducer ().Ptr (), chunksLimit, sizeLimit)) {
627
633
if (ETypeAnnotationKind::Struct == GetSeqItemType (*reduce.Reducer ().Args ().Arg (0 ).Ref ().GetTypeAnn ()).GetKind ()) {
628
634
YQL_CLOG (INFO, ProviderYt) << " Reduce on DQ with equivalent input size " << stat->front () << " and " << stat->back () << " chunks." ;
629
- PushStat (" Hybrid_Reduce_try" );
635
+ PushStat (" HybridTry" );
636
+ PushHybridStat (" Try" , node.Raw ()->Content ());
630
637
return MakeYtReduceByDq (reduce, ctx);
631
638
}
632
639
}
633
640
}
634
- PushStat (" Hybrid_Reduce_over_limits" );
641
+ PushStat (" HybridSkipOverLimits" );
642
+ PushHybridStat (" SkipOverLimits" , node.Raw ()->Content ());
635
643
}
636
644
}
637
645
@@ -647,12 +655,14 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
647
655
if (CanExecuteInHybrid (mapReduce.Reducer ().Ptr (), chunksLimit, sizeLimit) && CanExecuteInHybrid (mapReduce.Mapper ().Ptr (), chunksLimit, sizeLimit)) {
648
656
if (ETypeAnnotationKind::Struct == GetSeqItemType (*mapReduce.Reducer ().Args ().Arg (0 ).Ref ().GetTypeAnn ()).GetKind ()) {
649
657
YQL_CLOG (INFO, ProviderYt) << " MapReduce on DQ with equivalent input size " << stat->front () << " and " << stat->back () << " chunks." ;
650
- PushStat (" Hybrid_MapReduce_try" );
658
+ PushHybridStat (" Try" , node.Raw ()->Content ());
659
+ PushStat (" HybridTry" );
651
660
return MakeYtReduceByDq (mapReduce, ctx);
652
661
}
653
662
}
654
663
}
655
- PushStat (" Hybrid_MapReduce_over_limits" );
664
+ PushHybridStat (" SkipOverLimits" , node.Raw ()->Content ());
665
+ PushStat (" HybridOverLimits" );
656
666
}
657
667
}
658
668
@@ -665,6 +675,12 @@ class TYtDqHybridTransformer : public TOptimizeTransformerBase {
665
675
}
666
676
};
667
677
678
+ void PushHybridStat (TStringBuf statName, TStringBuf opName) const {
679
+ with_lock (State_->StatisticsMutex ) {
680
+ State_->HybridStatistics [opName].Entries .emplace_back (TString{statName}, 0 , 0 , 0 , 0 , 1 );
681
+ }
682
+ };
683
+
668
684
const TYtState::TPtr State_;
669
685
const THolder<IGraphTransformer> Finalizer_;
670
686
};
0 commit comments