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.
|
||||
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}
|
||||
|
||||
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
|
||||
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}}
|
||||
|
||||
\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}}
|
||||
%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
|
||||
|
||||
\subsubsection{{InfluxDB Installation}}
|
||||
|
||||
Jupyter Notebooks ist eine Webbasierte Open-Source Anwendung mit dem Ziel Code in den Sprachen Python, R, und Julia einfach zu schreiben, bearbeiten,
|
||||
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.
|
||||
\footnote{\cite[vgl.][]{InfluxAPI}}
|
||||
|
||||
|
||||
\subsection{{InfluxDB Installation}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%
|
||||
% 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.
|
||||
\footnote{\cite[vgl.][]{InfluxDBToken}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%https://docs.influxdata.com/influxdb/cloud/security/tokens/#all-access-token
|
||||
|
||||
\subsection{{Daten abrufen}}
|
||||
|
@ -145,7 +148,7 @@ Spalten der Tabelle sind in der \cref{tab:file-stations} beschreiben.
|
|||
\begin{table}[hbt]
|
||||
\centering
|
||||
\begin{minipage}[t]{1\textwidth} % Breite, z.B. 1\textwidth
|
||||
\caption{Bedeutung Stationstabelle} % Überschrift
|
||||
\caption{Bedeutung Stationstabellen Felder} % Überschrift
|
||||
\begin{tabularx}{\columnwidth}{rXrr}
|
||||
\toprule
|
||||
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.
|
||||
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
|
||||
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.
|
||||
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.
|
||||
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
|
||||
|
||||
@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,
|
||||
author = {Influxdata},
|
||||
title = {{API Quick Start}},
|
||||
|
|
Reference in a new issue