added Entwicklungsumgebung
This commit is contained in:
parent
90c37a2b16
commit
6bf5c657c4
Binary file not shown.
|
@ -5,11 +5,11 @@
|
||||||
|
|
||||||
Das Ziel dieser Arbeit ist es eine Einführung in die Funktion von \gls{TSDB} zu geben.
|
Das Ziel dieser Arbeit ist es eine Einführung in die Funktion von \gls{TSDB} zu geben.
|
||||||
Außerdem soll beispielhaft an InfluxDB gezeigt werden, wie mit einer \gls{TSDB} gearbeitet wird.
|
Außerdem soll beispielhaft an InfluxDB gezeigt werden, wie mit einer \gls{TSDB} gearbeitet wird.
|
||||||
Dazu werden die Wetterdaten des \gls{DWD} importiert und ausgewertet.
|
Dazu werden die Wetterdaten des \gls{DWD} in InfluxDB importiert und ausgewertet.
|
||||||
|
|
||||||
\subsection{Aufbau und Vorgehensweise}
|
\subsection{Aufbau und Vorgehensweise}
|
||||||
|
|
||||||
Im ersten Teil dieser Arbeit werden die Grundlagen von \gls{TSDB} erklärt und Besonderheiten beschreiben.
|
Im ersten Teil dieser Arbeit werden die Grundlagen von \gls{TSDB} erklärt und Besonderheiten beschreiben.
|
||||||
Im darauf folgenden Kapitel wird dann exemplarisch an InfluxDB gezeigt, wie mit einer \gls{TSDB} gearbeitet wird. Im
|
Im darauf folgenden Kapitel wird dann exemplarisch an InfluxDB gezeigt, wie mit einer \gls{TSDB} gearbeitet wird. Im
|
||||||
letzen Kapitel werden die Inhalte dieser Arbeit zusammengefasst.
|
letzten Kapitel werden die Inhalte dieser Arbeit zusammengefasst.
|
||||||
|
|
||||||
|
|
|
@ -90,14 +90,34 @@ Speicherplatz auf der Festplatte, um die gleiche Menge an Daten zu speichern.\fo
|
||||||
|
|
||||||
\subsection{{Entwicklungsumgebung}}
|
\subsection{{Entwicklungsumgebung}}
|
||||||
|
|
||||||
\subsubsection{{Docker}}
|
Um mit InfluxDB zu arbeiten wird eine Umgebung zum ausführen von Docker Containern benötigen, in welchen wir InfluxDB und Jupyter Notebooks betreiben.
|
||||||
|
Der eigentliche Code wird dann in Jupyter Notebooks mit Python entwickelt. Die Grundlagen über die Eingesetzen Tool und Techniken finde sich in diesem Kapitel.
|
||||||
|
|
||||||
%Docker und Docker Compose
|
\subsubsection{{Docker und Docker-Compose}}
|
||||||
|
%Docker
|
||||||
|
Docker ist eine Software für das erstellen und verwalten von Containern. Mit Docker ist es möglich Anwendungen samt ihrer Umgebung in einer Einheit
|
||||||
|
zusammenzufassen, so das diese einfach auf anderen System ausgeführt werden können. Dabei hat jeder Container ein eigenes Dateisystem und ein eigens
|
||||||
|
Betriebssystem. Allerdings teilen sich Container und Hostsystem den Kernel des Hostsystems. Dadurch hat diese Art der Virtualisierung deutlich
|
||||||
|
weniger Overhead als andere Virtualisierungstechniken. Zusätzlich wird das Betriebssystem innerhalb des Containers maximal reduziert so das nur
|
||||||
|
noch benötigte Komponenten vorhanden sind. Wichtig ist es das immer nur möglichst eine Anwendung in einem Container zu finden ist.
|
||||||
|
Durch die Virtualisierung sind die einzelnen Container voneinander getrennt.\footnote{\cite[vgl.][54\psqq]{DanielStender2020}}
|
||||||
|
|
||||||
|
%Docker Compose
|
||||||
|
Allerdings bestehen einige Anwendungen aus mehreren Komponenten, diese können durch mehrere Docker Container abgebildet werden. Um die Verwaltung von
|
||||||
|
mehreren Container zu erleichtern kann Docker-Compose genutzt werden. Mithilfe von Docker Compose können größere Umgebungen in einem Compose File
|
||||||
|
verwaltete werden. Hier werden die Umgebungsvariablen, Container Image oder Dockerfiles, Ports, Storage und weiteres in einer Datei definiert.
|
||||||
|
Mithilfe dieser definition kann Docker Compose eine komplexe Umgebung mit nur einem Befehl initialisieren.\footnote{\cite[vgl.][151\psqq]{DanielStender2020}}
|
||||||
|
|
||||||
\subsubsection{{Python und Jupyter Notebooks}}
|
\subsubsection{{Python und Jupyter Notebooks}}
|
||||||
|
%Python
|
||||||
|
Python ist eine universelle Prozedurale und Imperative Programmiersprache die 1994 in der ersten Version veröffentlicht wurde. Der Name ist eine Huldigung an Monty Python und
|
||||||
|
wurde nicht nach einer Schlange benannt, auch wenn das Logo eine Schlange ist. Python ist unter der freien PFS Lizenz lizenziert wodurch es auch in
|
||||||
|
kommerziellen Anwendung genutzt werden kann. Python ist eine Interpretierte Sprache. Das heißt das sie nicht zu einer ausführbaren Datei kompiliert wird
|
||||||
|
sondern von einem Interpreter interpretiert wird. Außerdem ist Python eine unter Programmieranfängern sehr beliebte Sprache die auch sehr viel in den
|
||||||
|
Bereichen DataSience, DeepLerning, Naturwissenschaften und Linux Systemprogrammierung eingesetzt wird.\footnote{\cite[vgl.][66\psqq]{DanielStender2020}}
|
||||||
|
|
||||||
% Python
|
|
||||||
% Jupyter Notebooks
|
% Jupyter Notebooks
|
||||||
|
Jupyter Notebooks ist eine Webbasierte Open-Source Anwendung mit dem Ziel Code in den Sprachen Python, R, und Julia einfach zu schreiben, bearbeiten,
|
||||||
\subsubsection{{InfluxDB Installation}}
|
auszuführen und einfach zu teilen. Ein Notebook besteht immer aus Zellen. Eine Zelle kann Code oder Markdown Formatierten Text anzeigen. Jede Zelle
|
||||||
|
kann einzeln ausgeführt werden. Dadurch kann ein Programm sehr einfach und verständlich dargestellt und erklärt werden. Es ist auch möglich neue Notebooks
|
||||||
|
und Dateien im Webinterface von Jupyter Notebooks selbst anzulegen.\footnote{\cite[vgl.][91\psqq]{NikitaSilaparasetty2020}}
|
|
@ -5,6 +5,13 @@ Im weiterem verlauf dieses Kapitels wird am Beispiel von Wetterdaten gezeigt, wi
|
||||||
eigene Anwendungen ein \gls{HTTP} \gls{API} zur Verfügung, für die es in vielen Programmiersprachen Client Librarys gibt. Außerdem wird ein Webinterface und ein \gls{CLI} bereitgestellt.
|
eigene Anwendungen ein \gls{HTTP} \gls{API} zur Verfügung, für die es in vielen Programmiersprachen Client Librarys gibt. Außerdem wird ein Webinterface und ein \gls{CLI} bereitgestellt.
|
||||||
\footnote{\cite[vgl.][]{InfluxAPI}}
|
\footnote{\cite[vgl.][]{InfluxAPI}}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{{InfluxDB Installation}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%
|
%
|
||||||
% Bis hierhin korrigiert!
|
% Bis hierhin korrigiert!
|
||||||
%
|
%
|
||||||
|
@ -55,10 +62,6 @@ Dabei kann zwischen einem All-Access token und einem Read/Write token ausgewähl
|
||||||
Mit einem Read/Write Token kann wie in \cref{fig:load-data-add-token} zu sehen, ausgewählt werden, auf welchen Bucket geschrieben oder gelesen werden kann.
|
Mit einem Read/Write Token kann wie in \cref{fig:load-data-add-token} zu sehen, ausgewählt werden, auf welchen Bucket geschrieben oder gelesen werden kann.
|
||||||
\footnote{\cite[vgl.][]{InfluxDBToken}}
|
\footnote{\cite[vgl.][]{InfluxDBToken}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%https://docs.influxdata.com/influxdb/cloud/security/tokens/#all-access-token
|
%https://docs.influxdata.com/influxdb/cloud/security/tokens/#all-access-token
|
||||||
|
|
||||||
\subsection{{Daten abrufen}}
|
\subsection{{Daten abrufen}}
|
||||||
|
@ -145,7 +148,7 @@ Spalten der Tabelle sind in der \cref{tab:file-stations} beschreiben.
|
||||||
\begin{table}[hbt]
|
\begin{table}[hbt]
|
||||||
\centering
|
\centering
|
||||||
\begin{minipage}[t]{1\textwidth} % Breite, z.B. 1\textwidth
|
\begin{minipage}[t]{1\textwidth} % Breite, z.B. 1\textwidth
|
||||||
\caption{Bedeutung Stationstabelle} % Überschrift
|
\caption{Bedeutung Stationstabellen Felder} % Überschrift
|
||||||
\begin{tabularx}{\columnwidth}{rXrr}
|
\begin{tabularx}{\columnwidth}{rXrr}
|
||||||
\toprule
|
\toprule
|
||||||
Feld Name & Bedeutung \\
|
Feld Name & Bedeutung \\
|
||||||
|
@ -173,9 +176,10 @@ Um die Daten auswerten zu können müssen diese als erstes heruntergeladen und e
|
||||||
des \gls{DWD} für jede Datei eine URL ausgelesen. Die so gewonnen URLs können dann mithilfe einer Schleife heruntergeladen werden.
|
des \gls{DWD} für jede Datei eine URL ausgelesen. Die so gewonnen URLs können dann mithilfe einer Schleife heruntergeladen werden.
|
||||||
Um den Messwerten eine Station zuzuordnen zu können wird als erstes die Datei mit den Station verarbeitet. Für jede Station wird Objekt erstellt und in ein
|
Um den Messwerten eine Station zuzuordnen zu können wird als erstes die Datei mit den Station verarbeitet. Für jede Station wird Objekt erstellt und in ein
|
||||||
dictionary gespeichert. Dadurch kann in im dictionary einfach über die STATIONS\_ID die passende Station gefunden werden. Weil diese Datei allerdings nicht
|
dictionary gespeichert. Dadurch kann in im dictionary einfach über die STATIONS\_ID die passende Station gefunden werden. Weil diese Datei allerdings nicht
|
||||||
CSV formatiert ist musst die Datei auf eine andere Art ausgewertete werden. Um die einzelnen Felder aus einer Zeile zu bekommen wird also immer so lange
|
CSV formatiert ist musst die Datei auf eine andere Art ausgewertete werden. Um die einzelnen Felder aus einer Zeile zu bekommen wird immer so lange
|
||||||
gelesen bis wieder ein bestimmte Anzahl von Leerzeichen hintereinander erkannt worden ist. Die Zeichen zwischen den Leerzeichen sind dann ein ausgelesenes Feld.
|
gelesen bis wieder ein bestimmte Anzahl von Leerzeichen hintereinander erkannt worden ist. Die Zeichen zwischen den Leerzeichen sind dann ein ausgelesenes Feld.
|
||||||
Nachdem die Stationsdatei ausgewertet word ist werden die CSV Datein in einer Schleife entpackt und mithilfe der Bibliothek Pandas in ein Dataframe
|
Nachdem die Stationsdaten ausgewertet worden sind, werden die CSV Datein in einer Schleife entpackt und mithilfe der Bibliothek Pandas in ein Dataframe
|
||||||
umgewandelt. Das so erzeugte Dataframe wir im letzten Schritt mit den Daten der Stations zusammengeführt und als Datenpunkt in InfluxDB geschrieben.
|
umgewandelt. Das so erzeugte Dataframe wir im letzten Schritt mit den Daten der Stations zusammengeführt und als Datenpunkt in InfluxDB geschrieben.
|
||||||
|
|
||||||
Weitere Erklärungen und der Code selbst kann im angehängten Jupyter notebook eingesehen und ausgeführt werden.
|
Weitere Erklärungen und der Code selbst kann im angehängten Jupyter notebook eingesehen und ausgeführt werden.
|
||||||
|
|
||||||
|
\subsubsection{{Wetterdaten Verarbeiten}}
|
BIN
arbeit/library/Introduction to Jupyter Notebook.pdf
Normal file
BIN
arbeit/library/Introduction to Jupyter Notebook.pdf
Normal file
Binary file not shown.
|
@ -40,6 +40,24 @@ keywords = {web}
|
||||||
|
|
||||||
%%%% Quellen
|
%%%% Quellen
|
||||||
|
|
||||||
|
@book{NikitaSilaparasetty2020,
|
||||||
|
author = {Nikita Silaparasetty},
|
||||||
|
pages = {91--118},
|
||||||
|
publisher = {Apress Berkeley CA},
|
||||||
|
title = {{Machine Learning Concepts with Python and the Jupyter Notebook Environment}},
|
||||||
|
year = {2020},
|
||||||
|
keywords = {mono}
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{DanielStender2020,
|
||||||
|
author = {Daniel Stender},
|
||||||
|
pages = {54--68},
|
||||||
|
publisher = {Rheinwerk Computing},
|
||||||
|
title = {{Cloud-Infrastrukturen: Infrastructure as a Service – So geht moderne IT-Infrastruktur. Das Handbuch für DevOps-Teams und Administratoren}},
|
||||||
|
year = {2020},
|
||||||
|
keywords = {mono}
|
||||||
|
}
|
||||||
|
|
||||||
@misc{InfluxAPI,
|
@misc{InfluxAPI,
|
||||||
author = {Influxdata},
|
author = {Influxdata},
|
||||||
title = {{API Quick Start}},
|
title = {{API Quick Start}},
|
||||||
|
|
Reference in a new issue