Github user CodingCat commented on the issue:

    https://github.com/apache/spark/pull/11994
  
    @jerryshao  I mean we also need to provide BaseReporter trait 
    
    ```scala
    trait Sink {
    
      protected val reporter: BaseReporter = createReporter()
    
      def createReporter(): BaseReporter
    
      def report(): Unit = {
        reporter.report()
      }
    }
    
    
    trait BaseReporter {
    
      def report()
    }
    
    class SomeSink extends Sink {
    
      override def createReporter(): BaseReporter = {
    
      }
    }
    
    class CodeHaleCsvReporter extends BaseReporter {
    
      val reporter: CsvReporter = CsvReporter.forRegistry(new MetricRegistry()) 
// if they want to use multiple codehale based reporter, they have to ensure 
the singleton
        .formatFor(Locale.US)
        .convertDurationsTo(TimeUnit.MILLISECONDS)
        .convertRatesTo(TimeUnit.SECONDS)
        .build(new File(pollDir))
    
      override def report(): Unit = {
        reporter.report()
      }
    }
    
    ```
    



---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to