Ich arbeite an einem Spark-Streaming-Programm, das einen Kafka-Stream abruft, sehr grundlegende Transformation im Stream durchführt und dann die Daten in einen DB (Voltdb, wenn es relevant ist) einfügt. Ich versuche die Rate zu messen, mit der ich Zeilen in die Datenbank einfüge. Ich denke, Metriken können nützlich sein (mit JMX). Ich kann jedoch nicht herausfinden, wie benutzerdefinierte Metriken zu Spark hinzugefügt werden. Ich habe Sparks Quellcode angeschaut und auch gefunden Thread aber es funktioniert nicht für mich. Ich habe auch die JMX-Senke in der Datei conf.metrics aktiviert. Was nicht funktioniert, ist, dass meine benutzerdefinierten Messwerte nicht mit JConsole angezeigt werden.
Könnte jemand erklären, wie man benutzerdefinierte Metriken (vorzugsweise über JMX) zum Funken-Streaming hinzufügt? Oder alternativ, wie meine Einführungsrate zu meiner DB (speziell VoltDB) zu messen? Ich verwende Spark mit Java 8.
Groupon haben eine Bibliothek namens %code% , mit der Sie eine einfache (Codahale-ähnliche) API auf Ihren Executoren verwenden können Die Ergebnisse werden im Treiber gesammelt und automatisch in der vorhandenen Metrik-Registrierung von Spark registriert. Diese werden dann automatisch zusammen mit Sparks integrierten Metriken exportiert, wenn Sie eine Metriksenke gemäß der Spark-Dokumentation
Hier finden Sie ein hervorragendes Tutorial, das alle Setups abdeckt, die Sie benötigen, um Sparks MetricsSystem mit Graphite einzurichten. Das sollte den Trick machen:
Nach dem Durchsuchen des Quellcodes habe ich herausgefunden, wie ich meine eigenen benutzerdefinierten Messwerte hinzufügen kann. Es erfordert 3 Dinge:
Ich habe immer noch Probleme damit, die Anzahl der Einfügungen in VoltDB zu zählen, weil der Code auf den Executoren läuft, aber das ist ein Thema für ein anderes Thema:)
Ich hoffe, das wird anderen helfen
um Zeilen basierend auf Einfügungen von VoltDB einzufügen, benutze Akkumulatoren - und dann von deinem Treiber kannst du einen Listener erstellen - vielleicht so etwas, um loszulegen
%Vor%Hier haben Sie Zugriff auf diese Zeilen kombiniert Akkumulatoren und dann können Sie an Ihre Spüle senden ..