private void updateCounter(String name, Map<String, String> dimensions, double value) { long current = System.currentTimeMillis(); String metricName = MetricKeyCodeDecoder.codeMetricKey(name, dimensions); if (registry.getMetrics().get(metricName) == null) { EagleCounterMetric metric = new EagleCounterMetric(current, metricName, value, MERITE_GRANULARITY); metric.registerListener(listener); registry.register(metricName, metric); } else { EagleCounterMetric metric = (EagleCounterMetric) registry.getMetrics().get(metricName); metric.update(value, current); // TODO: need remove unused metric from registry } }
@Override public void flatMap(List<Object> input, Collector<Tuple1<String>> collector) { try { String user = (String) input.get(0); Long timestamp = (Long) input.get(1); String metricKey = generateMetricKey(user); if (registry.getMetrics().get(metricKey) == null) { EagleCounterMetric metric = new EagleCounterMetric(timestamp, metricKey, 1.0, granularity); metric.registerListener(listener); registry.register(metricKey, metric); } else { EagleMetric metric = (EagleMetric)registry.getMetrics().get(metricKey); metric.update(1, timestamp); //TODO: if we need to remove metric from registry } } catch (Exception ex) { LOG.error("Got an exception, ex: ", ex); } } }
@Override public void execute(Tuple input) { try { String user = input.getString(0); Long timestamp = input.getLong(1); String metricKey = generateMetricKey(user); if (registry.getMetrics().get(metricKey) == null) { EagleCounterMetric metric = new EagleCounterMetric(timestamp, metricKey, 1.0, granularity); metric.registerListener(listener); registry.register(metricKey, metric); } else { EagleMetric metric = (EagleMetric)registry.getMetrics().get(metricKey); metric.update(1, timestamp); //TODO: if we need to remove metric from registry } } catch (Exception ex) { LOG.error("Got an exception, ex: ", ex); }finally { collector.ack(input); } } }