Apache Zeppelin mit PySpark und PostgreSQL benutzen – Teil 3

Nachdem wir in Teil 1 und Teil 2 bereits erfahren haben, wie wir Zeppelin direkt mit PostgreSQL benutzen können, widmet sich der letzte Teil der Abfrage der Testdatenbank mit PySpark.

Ehe wir loslegen können, braucht unsere Datenbank erst einmal ein paar Testdaten. Da es in dieser Miniserie nicht um das Abfragen und Aufbereiten von Daten an sich geht, benutze ich für das schnelle Erzeugen von Daten einfach das Tool PgBench. Details dazu könnt ihr unter https://www.postgresql.org/docs/11/pgbench.html nachlesen.

Folgendes Kommando erzeugt dabei 100000 Datensätze in der Tabelle pgbench_accounts

pgbench -d -U testadmin -i test

Nun können wir … more

Apache Zeppelin mit PySpark und PostgreSQL benutzen – Teil 2

Im ersten Teil habe ich beschrieben, wie ich das Docker Image von Apache Zeppelin um die Spark Version 2.4.0 erweitert und kurz getestet habe.

In diesem Teil werde ich einen eigenen Interpreter für PostgreSQL hinzufügen und eine erste Abfrage durchführen, um diesen zu testen. Danach wird noch die Konfiguration für den Spark Interpreter angepasst, damit dieser auch mit PostgreSQL arbeiten kann.

Um den neuen Interpreter hinzuzufügen, klicke ich auf das Drop-Down Menü, rechts im Zeppelin Header und wähle den Punkt Interpreter aus

Mit Create wird die Seite zum Konfigurieren des neuen Interpreters geladen und unter Interpreter more

Apache Zeppelin mit PySpark und PostgreSQL benutzen – Teil 1

In dieser kleinen Artikelserie beschreibe ich, wie man Apache Zeppelin mit dem PySpark Interpreter benutzen kann, um eine PostgreSQL Datenbank abzufragen.

Im ersten Teil werde ich das offizielle Docker Image von Apache Zeppelin 0.8.1 um Spark 2.4.0 erweitern. Danach geht es dann weiter mit der Konfiguration des Spark Interpreters um auf PostgreSQL zugreifen zu können. Anschließend werden wir uns mit PgBench eine Datenbank mit Test Daten generieren und zu guter Letzt werden wir diese Daten mit PySpark abfragen

Beginnen wir also mit dem Erweitern des Docker Images. Dazu habe ich folgendes Dockerfile verwendet:

FROM apache/zeppelin:0.8.1

ENV 
more

Timeseries Data Processing – Überlegungen zu Datentypen – Teil 4 – RingBuffer

Nachdem ich schon Datentypen/Klassen wie das Array, die LinkedList und ConcurrentQueue etwas näher beleuchtet habe, komme ich nun zum letzten Typen. Einer speziellen C# Implementierung eines Ring-Puffers.

Wer will kann die Problemstellung, den groben Testaufbau und die Auswirkung der verschiedenen Typen gerne nochmal in Teil 1, 2 und 3 nachverfolgen.

Das beste Ergebnis konnte ich bisher mit der ConcurrentQueue erreichen.
Dabei habe ich mit 10 Millionen Einträge vom Typ double, bei einer Frequenz von 2 Millionen neuen Daten pro Sekunde, getestet. Wie sich aber gezeigt hat, scheint der Garbage Collector doch einen nicht zu vernachlässigenden … more

Timeseries Data Processing – Überlegungen zu Datentypen – Teil 3 – ConcurrentQueue

Im letzten Teil konnte ich mit Hilfe einer LinkedList bereits eine erhebliche Performanceverbesserung für das zyklische hinzufügen von Daten innerhalb eines fest definierten Zeitraums erzielen.

In diesem Teil will ich herausfinden, ob ich durch die Verwendung einer ConcurrentQueue das Ergebnis noch verbessern kann.

Den letzten Test mit der LinkedList habe ich mit einer Gesamtgröße von 5000000 Einträgen und 50000 neuen Einträgen pro 50 Millisekunden (bzw. 1000000 pro Sekunde) durchgeführt. Daher werde ich die ConcurrentQueue zunächst mit den gleichen Werten testen.

Im Vergleich scheint die ConcurrentQueue keine Verbesserungen zu bringen. Aber der Schein trügt. Werfen wir doch … more

Scroll to top