org.apache.spark.metrics.sink.Sink Scala Examples
The following examples show how to use org.apache.spark.metrics.sink.Sink.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: StatsDSink.scala From spark-statsd with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.Properties import java.util.concurrent.TimeUnit import com.codahale.metrics.{MetricRegistry, MetricFilter} import com.readytalk.metrics.StatsDReporter import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem import org.apache.spark.metrics.sink.Sink private[spark] class StatsDSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val STATSD_DEFAULT_PERIOD = 10 val STATSD_DEFAULT_UNIT = "SECONDS" val STATSD_DEFAULT_PREFIX = "" val STATSD_KEY_HOST = "host" val STATSD_KEY_PORT = "port" val STATSD_KEY_PERIOD = "period" val STATSD_KEY_UNIT = "unit" val STATSD_KEY_PREFIX = "prefix" def propertyToOption(prop: String): Option[String] = Option(property.getProperty(prop)) if (!propertyToOption(STATSD_KEY_HOST).isDefined) { throw new Exception("StatsD sink requires 'host' property.") } if (!propertyToOption(STATSD_KEY_PORT).isDefined) { throw new Exception("StatsD sink requires 'port' property.") } val host = propertyToOption(STATSD_KEY_HOST).get val port = propertyToOption(STATSD_KEY_PORT).get.toInt val pollPeriod = propertyToOption(STATSD_KEY_PERIOD) match { case Some(s) => s.toInt case None => STATSD_DEFAULT_PERIOD } val pollUnit: TimeUnit = propertyToOption(STATSD_KEY_UNIT) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(STATSD_DEFAULT_UNIT) } val prefix = propertyToOption(STATSD_KEY_PREFIX).getOrElse(STATSD_DEFAULT_PREFIX) MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val reporter = StatsDReporter.forRegistry(registry) .prefixedWith(prefix) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .filter(MetricFilter.ALL) .build(host, port) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 2
Source File: LogAnalyticsMetricsSink.scala From spark-monitoring with MIT License | 5 votes |
package org.apache.spark.metrics.sink.loganalytics import java.util.Properties import java.util.concurrent.TimeUnit import com.codahale.metrics.MetricRegistry import org.apache.spark.internal.Logging import org.apache.spark.metrics.sink.Sink import org.apache.spark.{SecurityManager, SparkException} private class LogAnalyticsMetricsSink( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink with Logging { private val config = new LogAnalyticsSinkConfiguration(property) org.apache.spark.metrics.MetricsSystem.checkMinimalPollingPeriod(config.pollUnit, config.pollPeriod) var reporter = LogAnalyticsReporter.forRegistry(registry) .withWorkspaceId(config.workspaceId) .withWorkspaceKey(config.secret) .withLogType(config.logType) .build() override def start(): Unit = { reporter.start(config.pollPeriod, config.pollUnit) logInfo(s"LogAnalyticsMetricsSink started") } override def stop(): Unit = { reporter.stop() logInfo("LogAnalyticsMetricsSink stopped.") } override def report(): Unit = { reporter.report() } }
Example 3
Source File: PrometheusSink.scala From spark-metrics with Apache License 2.0 | 5 votes |
package org.apache.spark.banzaicloud.metrics.sink import java.net.URL import java.util.Properties import com.banzaicloud.spark.metrics.sink.PrometheusSink.SinkConfig import com.codahale.metrics.MetricRegistry import io.prometheus.client.exporter.PushGateway import org.apache.spark.banzaicloud.metrics.sink.PrometheusSink.SinkConfigProxy import org.apache.spark.internal.config import org.apache.spark.metrics.sink.Sink import org.apache.spark.{SecurityManager, SparkConf, SparkEnv} object PrometheusSink { class SinkConfigProxy extends SinkConfig { // SparkEnv may become available only after metrics sink creation thus retrieving // SparkConf from spark env here and not during the creation/initialisation of PrometheusSink. @transient private lazy val sparkConfig = Option(SparkEnv.get).map(_.conf).getOrElse(new SparkConf(true)) // Don't use sparkConf.getOption("spark.metrics.namespace") as the underlying string won't be substituted. def metricsNamespace: Option[String] = sparkConfig.get(config.METRICS_NAMESPACE) def sparkAppId: Option[String] = sparkConfig.getOption("spark.app.id") def sparkAppName: Option[String] = sparkConfig.getOption("spark.app.name") def executorId: Option[String] = sparkConfig.getOption("spark.executor.id") } } class PrometheusSink(property: Properties, registry: MetricRegistry, securityMgr: SecurityManager, sinkConfig: SinkConfig, pushGatewayBuilder: URL => PushGateway) extends com.banzaicloud.spark.metrics.sink.PrometheusSink(property, registry, sinkConfig, pushGatewayBuilder) with Sink { // Constructor required by MetricsSystem::registerSinks() def this(property: Properties, registry: MetricRegistry, securityMgr: SecurityManager) = { this( property, registry, securityMgr, new SinkConfigProxy, new PushGateway(_) ) } }