Zurück zu allen Blogbeiträgen

Von überall aus auf deinen Spark-Cluster zugreifen – mit Apache Livy

  • Data Engineering
  • Python
30. Oktober 2019
·

Team statworx

Livy ist ein REST-Webservice zum Einreichen von Spark-Jobs oder zum Zugriff auf – und somit zum Teilen von – lang laufenden Spark-Sitzungen aus der Ferne. Anstatt deinen Spark-Client mühsam zu konfigurieren und zu installieren, übernimmt Livy diese Aufgabe und stellt dir eine einfache und komfortable Schnittstelle zur Verfügung.

Wir bei statworx nutzen Livy, um Spark-Jobs aus dem Workflow-Tool Apache Airflow auf flüchtigen Amazon-EMR-Clustern einzureichen. Außerdem teilen sich mehrere Kolleg:innen mit unterschiedlichen Scriptsprachenkenntnissen einen laufenden Spark-Cluster.

Ein weiterer großer Vorteil von Livy ist, dass du aus einer Reihe von Scriptsprachen wählen kannst: Java, Scala, Python, R. Wie auch bei Spark hängt es vom jeweiligen Anwendungsfall (und deinen Fähigkeiten) ab, welche Sprache du verwenden solltest bzw. kannst.

livy-architecture

Architektur – https://livy.incubator.apache.org/
Apache Livy befindet sich noch im Incubator-Status, und der Code ist im Git-Projekt zu finden.

Wann man es verwenden sollte

Da sich REST-APIs leicht in deine Anwendung integrieren lassen, solltest du sie verwenden, wenn:

  • mehrere Clients eine Spark-Session teilen sollen.
  • die Clients schlank sind und nicht mit Installation und Konfiguration überlastet werden sollen.
  • du ein schnelles Setup brauchst, um auf deinen Spark-Cluster zuzugreifen.
  • du Spark in eine App auf deinem Mobilgerät integrieren möchtest.
  • du volatile Cluster hast und nicht jedes Mal die Konfiguration anpassen willst.
  • ein externes Workflow-Tool Spark-Jobs einreicht.

Voraussetzungen

Livy ist im Allgemeinen benutzerfreundlich, und du brauchst eigentlich nicht viel Vorbereitung. Alles, was du grundsätzlich benötigst, ist ein HTTP-Client, um mit der REST-API von Livy zu kommunizieren. REST-APIs gelten als leicht zugänglich (Zustände und Listen sind sogar über Browser abrufbar), HTTP(s) ist ein bekanntes Protokoll (Statuscodes zur Fehlerbehandlung, Aktionen wie GET und POST usw.) und bietet gleichzeitig alle nötigen Sicherheitsmechanismen.

Da Livy als Vermittler für deine Spark-Anfragen fungiert und deinen Code (entweder als Script-Snippets oder als übermittelbare Pakete) an den Cluster weiterleitet, musst du tatsächlich Code schreiben (oder jemanden haben, der den Code für dich schreibt, oder ein übertragbares Paket zur Hand haben).

Ich habe mich in diesem Blogpost entschieden, hauptsächlich Python als Spark-Skriptsprache zu verwenden und auch direkt mit dem Livy-Interface zu interagieren. Einige Beispiele wurden zusätzlich mit curl ausgeführt.

Wie man Livy verwendet

Es gibt zwei Modi, um mit dem Livy-Interface zu interagieren:

  • Interactive Sessions haben eine laufende Session, in die du Anweisungen senden kannst. Sofern Ressourcen verfügbar sind, werden diese ausgeführt und du erhältst eine Ausgabe. Das kann verwendet werden, um mit Daten zu experimentieren oder schnelle Berechnungen durchzuführen.
  • Jobs/Batch übermitteln Code-Pakete wie Programme. Ein typischer Anwendungsfall ist eine regelmäßige Aufgabe mit bestimmten Parametern, die im Hintergrund ausgeführt wird. Das könnte beispielsweise eine Datenvorbereitungsaufgabe sein, die Eingabe- und Ausgabeverzeichnisse als Parameter entgegennimmt.

Im Folgenden schauen wir uns beide Fälle und den typischen Ablauf der Einreichung näher an. Jeder Fall wird durch Beispiele veranschaulicht.

Interactive Sessions

Beginnen wir mit einem Beispiel für eine interaktive Spark-Session. Im gesamten Beispiel verwende ich Python und das requests-Paket, um Anfragen an die REST-API zu senden und Antworten zu empfangen. Wie bereits erwähnt, musst du diesen Weg nicht unbedingt gehen – du kannst auch deinen bevorzugten HTTP-Client verwenden (sofern dieser POST- und DELETE-Anfragen unterstützt).

Start einer Spark-Session. Es gibt eine Reihe von Parametern, die konfiguriert werden können (die genauen Details findest du in der Livy-Dokumentation), aber für diesen Blogpost halten wir uns an die Grundlagen und geben lediglich den Namen und den Typ des Codes an. Wenn du bereits Spark-Code ohne Livy übermittelt hast, kommen dir Parameter wie executorMemory oder (YARN) queue vielleicht bekannt vor. Und falls du aufwendigere Tasks mit zusätzlichen Bibliotheken ausführst, weißt du sicher, dass auch der jars-Parameter entsprechend konfiguriert werden muss.

Um die Session zu starten, müssen wir eine POST-Anfrage an die Adresse /sessions mit den Parametern senden.

import requests
LIVY_HOST = 'http://livy-server'

directive = '/sessions'
headers = {'Content-Type': 'application/json'}

data = {'kind':'pyspark','name':'first-livy'}

resp = requests.post(LIVY_HOST+directive, headers=headers, data=json.dumps(data))

if resp.status_code == requests.codes.created:
    session_id = resp.json()['id']
else:
    raise CustomError()

Livy antwortet im Gegenzug mit einer Kennung für die Session, die wir aus der Antwort extrahieren.

Beachte, dass die Session möglicherweise eine gewisse Startzeit benötigt, bis YARN (ein Ressourcenmanager in der Hadoop-Welt) alle Ressourcen zugewiesen hat. In der Zwischenzeit überprüfen wir den Status der Session, indem wir die Adresse /sessions/{session_id}/state abfragen. Sobald der Status idle ist, können wir Befehle gegen die Session ausführen.

Um Spark-Code auszuführen, verwendet man sogenannte Statements. Der Code wird in den Body einer POST-Anfrage gepackt und an die entsprechende Adresse gesendet: sessions/{session_id}/statements.

directive = f'/sessions/{session_id}/statements'

data = {'code':'...'}

resp = request.post(LIVY_HOST+directive, headers=headers, data=json.dumps(data))

Als Antwort erhalten wir folgende Attribute:

Attribut Bedeutung
id Zur Identifikation der Anweisung
code Der Code, der ausgeführt wurde
state Der Ausführungsstatus
output Die Ausgabe der Anweisung

Das Statement durchläuft mehrere Zustände (siehe unten) und je nach deinem Code, deiner Interaktion (Statements können auch abgebrochen werden) und den verfügbaren Ressourcen landet es mit mehr oder weniger Wahrscheinlichkeit im Status success. Der entscheidende Punkt hierbei ist, dass wir die Kontrolle über den Status haben und entsprechend handeln können.

statement-state

Übrigens: Das Abbrechen eines Statements erfolgt über eine GET-Anfrage an /sessions/{session_id}/statements/{statement_id}/cancel

Nun ist es an der Zeit, ein Statement einzureichen: Stellen wir uns vor, wir wären einer der Klassenkameraden von Gauß und bekämen die Aufgabe, die Zahlen von 1 bis 1000 zu summieren. Zum Glück hast du Zugang zu einem Spark-Cluster und – noch besser – dort läuft die Livy-REST-API, mit der wir über unsere mobile App verbunden sind: Alles, was du tun musst, ist folgenden Spark-Code zu schreiben:

import textwrap

code = textwrap.dedent("""df = spark.createDataFrame(list(range(1,1000)),'int')
df.groupBy().sum().collect()[0]['sum(value)']""")

code_packed = {'code':code}

Das ist die gesamte Logik, die wir definieren müssen. Der Rest ist die Ausführung gegen die REST-API:

import time

directive = f'/sessions/{session_id}/statements'
resp = requests.post(LIVY_HOST+directive, headers=headers, data=json.dumps(code_packed))
if resp.status_code == requests.codes.created:
    stmt_id = resp.json()['id']

    while True:
        info_resp = requests.get(LIVY_HOST+f'/sessions/{session_id}/statements/{stmt_id}')
        if info_resp.status_code == requests.codes.ok:
            state = info_resp.json()['state']
                if state in ('waiting','running'):
                    time.sleep(2)
                elif state in ('cancelling','cancelled','error'):
                    raise CustomException()
                else:
                    break
        else:
            raise CustomException()
    print(info_resp.json()['output'])

else:
  #something went wrong with creation
  raise CustomException()

Alle 2 Sekunden prüfen wir den Status des Statements und reagieren entsprechend auf das Ergebnis: Wir beenden das Monitoring, sobald der Status gleich available ist. Natürlich müsste hier noch etwas ergänzt werden: Beispielsweise sollte ein Fehlerstatus anders behandelt werden als ein Abbruch, und es wäre klug, einen Timeout einzubauen, um die Schleife nach einer bestimmten Zeit zu verlassen.

Angenommen, der Code wurde erfolgreich ausgeführt, schauen wir uns das Attribut output in der Antwort an:

{'status': 'ok', 'execution_count': 2, 'data': {'text/plain': '499500'}}

Da haben wir es: Die Antwort ist 499500.

Zum Schluss beenden wir die Session wieder, um Ressourcen für andere freizugeben:

directive = f'/sessions/{session_id}/statements'
requests.delete(LIVY_HOST+directive)

Job Submission

Jetzt wollen wir zu einer kompakteren Lösung übergehen. Nehmen wir an, wir haben ein Paket zur Lösung einer bestimmten Aufgabe, das als Jar-Datei oder als Python-Skript vorliegt. Es müssen lediglich einige Parameter ergänzt werden – wie Eingabedateien, Ausgabeverzeichnis und einige Flags.

Der Einfachheit halber verwenden wir das bekannte Wordcount-Beispiel, für das Spark freundlicherweise eine Implementierung bereitstellt: Eine große Datei einlesen und bestimmen, wie oft jedes Wort vorkommt. Wir verwenden wieder Python als Spark-Sprache. Diesmal wird curl als HTTP-Client verwendet.

Als Beispiel-Datei habe ich den Wikipedia-Eintrag kopiert, der erscheint, wenn man Livy eingibt. Der Text handelt tatsächlich vom römischen Historiker Titus Livius.

Ich bin für dieses Beispiel in die AWS-Cloud gewechselt, weil sie eine komfortable Möglichkeit bietet, einen mit Livy ausgestatteten Cluster einzurichten, und Dateien können mit einem Upload-Handler einfach in S3 gespeichert werden. Schauen wir uns nun an, wie wir vorgehen sollten:

curl -X POST --data '{"file":"s3://livy-example/wordcount.py","args":[s3://livy-example/livy_life.txt"]}' 
-H "Content-Type: application/json" http://livy-server:8998/batches

Die Struktur ist derjenigen, die wir zuvor gesehen haben, sehr ähnlich. Wenn wir den Batch an Livy übergeben, erhalten wir im Gegenzug eine Kennung sowie einige weitere Informationen wie den aktuellen Status.

{"id":1,"name":null,"state":"running","appId":"application_1567416002081_0005",...}

Um den Fortschritt des Jobs zu überwachen, gibt es eine entsprechende Adresse: /batches/{batch_id}/state

Höchstwahrscheinlich möchten wir zunächst sicherstellen, dass der Job erfolgreich ausgeführt wurde. In allen anderen Fällen müssen wir herausfinden, was mit unserem Job passiert ist. Die Adresse /batches/{batchId}/log kann hier helfen, um den Lauf zu inspizieren.

Zum Schluss wird die Session entfernt durch:

curl -X DELETE http://livy-server:8998/batches/1 

woraufhin folgende Rückmeldung erfolgt: {"msg":"deleted"} – und damit sind wir fertig.

Trivia

  • Der Hadoop-Cluster-Dienst EMR von AWS unterstützt Livy nativ als Option in der Softwarekonfiguration.
aws-emr
  • Apaches Notebook-Tool Zeppelin unterstützt Livy als Interpreter, d.h. man schreibt Code direkt im Notebook und führt ihn unmittelbar über die Livy-REST-API aus, ohne sich selbst um HTTP kümmern zu müssen.
  • Sei vorsichtig und verwende Livy nicht in jedem Fall, wenn du einen Spark-Cluster abfragen willst: Wenn du Spark als Query-Backend nutzen und Daten über Spark SQL abfragen willst, solltest du dir eher den Thriftserver ansehen, anstatt eine Lösung um Livy herum zu bauen.
  • Kerberos kann in Livy für Authentifizierungszwecke integriert werden.
Linkedin Logo
Marcel Plaschke
Head of Strategy, Sales & Marketing
Beratung vereinbaren
Zugehörige Leistungen
No items found.

Weitere Blogartikel

  • Coding
  • Python
  • Statistics & Methods
Ensemble-Methoden im maschinellen Lernen: Bagging & Subagging
Team statworx
15.4.2025
Mehr erfahren
  • Deep Learning
  • Python
  • Tutorial
Verwendung von Reinforcement Learning zum Spielen von Super Mario Bros auf NES mit TensorFlow
Sebastian Heinz
15.4.2025
Mehr erfahren
  • Coding
  • Machine Learning
  • R
Abstimmung von Random Forest auf Zeitreihendaten
Team statworx
15.4.2025
Mehr erfahren
  • Data Science
  • Statistics & Methods
Modellregularisierung – The Bayesian Way
Thomas Alcock
15.4.2025
Mehr erfahren
  • Coding
  • Python
  • Statistics & Methods
Wie man Gradient Boosting um den Faktor Zwei beschleunigt
Team statworx
15.4.2025
Mehr erfahren
  • Coding
  • Frontend
  • R
Dynamische UI-Elemente in Shiny - Teil 2
Team statworx
15.4.2025
Mehr erfahren
  • Coding
  • R
Warum heißen sie so?! – Ursprung und Bedeutung von R-Paketnamen
Team statworx
15.4.2025
Mehr erfahren
  • Coding
  • Data Engineering
  • Data Science
Testen von REST-APIs mit Newman
Team statworx
14.4.2025
Mehr erfahren
  • Machine Learning
  • Python
  • R
XGBoost: Entscheidungsbaum vs. Lineares Modell
Fabian Müller
14.4.2025
Mehr erfahren
  • Data Science
  • R
Kombination von Preiselastizitäten und Verkaufsprognosen zur Verkaufssteigerung
Team statworx
14.4.2025
Mehr erfahren
  • Data Science
  • Machine Learning
  • R
Zeitreihenvorhersage mit Random Forest
Team statworx
14.4.2025
Mehr erfahren
  • Data Visualization
  • R
Gemeinschaftsdetektion mit Louvain und Infomap
Team statworx
14.4.2025
Mehr erfahren
  • Machine Learning
Machine Learning Goes Causal II: Der kausale Bruder des Random Forests
Team statworx
11.4.2025
Mehr erfahren
  • Coding
  • Data Visualization
  • R
Animierte Diagramme mit ggplot und gganimate
Team statworx
8.4.2025
Mehr erfahren
  • Artificial Intelligence
AI Trends Report 2025: Die 16 Trends im Überblick
Tarik Ashry
25.2.2025
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • GenAI
Wie ein CustomGPT Effizienz und Kreativität bei hagebau fördert
Tarik Ashry
15.1.2025
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Human-centered AI
Explainable AI in der Praxis: Mit der richtigen Methode die Black Box öffnen
Jonas Wacker
15.1.2025
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 4)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 3)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 2)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Culture
  • Data Science
  • Deep Learning
  • GenAI
  • Machine Learning
AI Trends Report 2024: statworx COO Fabian Müller zieht eine Zwischenbilanz
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Maßgeschneiderte KI-Chatbots: Hohe Leistung und schnelle Integration vereint
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Zurück in die Zukunft: Die Geschichte von Generativer KI (Episode 1)
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Culture
  • Human-centered AI
KI in der Arbeitswelt: Wie wir Skepsis in Zuversicht verwandeln
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • GenAI
  • statworx
Generative KI als Denkmaschine? Ein medientheoretischer Blick
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Culture
  • Human-centered AI
Wie Führungskräfte die Datenkultur im Unternehmen stärken können
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
Wie wir für Microsoft einen Chatbot mit echtem Wissen entwickelt haben
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Data Visualization
  • Frontend Solution
Warum Frontend-Entwicklung in Data Science-Anwendungen nützlich ist
Jakob Gepp
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • statworx
the byte - Wie wir ein KI-gesteuertes Pop-up Restaurant aufgebaut haben
Sebastian Heinz
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • GenAI
Die Zukunft des Customer Service: Generative KI als Erfolgsfaktor
Tarik Ashry
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Strategy
Der AI-Act ist da – diese Risikoklassen sollte man kennen
Fabian Müller
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Machine Learning
Genderdarstellung in der KI – Teil 2: Automatisierte Erzeugung genderneutraler Versionen von Gesichtsbildern
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Human-centered AI
  • Statistics & Methods
Die Black-Box entschlüsseln – 3 Explainable AI Methoden zur Vorbereitung auf den AI-Act
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Strategy
Wie der AI-Act die KI-Branche verändern wird: Alles, was man jetzt darüber wissen muss
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Recap
  • statworx
Big Data & AI World 2023 Recap
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Statistics & Methods
Ein erster Einblick in unser Forecasting Recommender Tool
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
Vom Können, Tun und Wollen – Warum Datenkultur und Death Metal einiges miteinander gemeinsam haben
David Schlepps
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
Wie man KI-generierte Avatare mit Hilfe von Stable Diffusion und Textual Inversion erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Strategy
Das Geheimnis der Datenkultur entschlüsseln: Diese Faktoren beeinflussen Kultur und Erfolg von Unternehmen
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Machine Learning
GPT-4 – Eine Einordnung der wichtigsten Neuerungen
Mareike Flögel
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Strategy
Knowledge Management mit NLP: So einfach verarbeitet man E-Mails mit KI
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
3 Anwendungsfälle, wie ChatGPT die Kommunikation in Unternehmen revolutionieren wird
Ingo Marquart
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Machine Learning
  • Tutorial
Paradigmenwechsel in NLP: 5 Ansätze, um bessere Prompts zu schreiben
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
Ho ho ho – weihnachtlicher Küchenabriss
Julius Heinz
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
Real-time Computer Vision: Gesichter erkennen mit einem Roboter
Sarah Sester
6.12.2024
Mehr erfahren
  • Recap
  • statworx
statworx @ UXDX Conf 2022
Markus Berroth
6.12.2024
Mehr erfahren
  • Data Engineering
  • Tutorial
Data Engineering – From Zero to Hero
Thomas Alcock
6.12.2024
Mehr erfahren
  • Recap
  • statworx
statworx @ vuejs.de Conf 2022
Jakob Gepp
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
Überwachung und Protokollierung von Anwendungen und Infrastruktur: Metriken und (Ereignis-)Protokolle
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Python
Wie Du Deinen Code und Deine Abhängigkeiten in Python scannst
Thomas Alcock
6.12.2024
Mehr erfahren
  • Cloud Technology
  • Data Engineering
  • Data Science
Wie du dein Data Science Projekt fit für die Cloud machst
Alexander Broska
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
  • Machine Learning
Geschlechter­darstellung in der KI – Teil 1: Verwendung von StyleGAN zur Erforschung von Geschlechter­vielfalt bei der Bild­bearbeitung
Isabel Hermes
6.12.2024
Mehr erfahren
  • R
Das helfRlein Package – Eine Sammlung nützlicher Funktionen
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Machine Learning
Data-Centric AI: Von Model-First zu Data-First KI-Prozessen
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Human-centered AI
  • Machine Learning
DALL-E 2: Warum Diskriminierung in der KI-Entwicklung nicht ignoriert werden kann
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Human-centered AI
statworx AI Principles: Warum wir eigene KI-Prinzipien entwickeln
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
5 Highlights vom Digital Festival Zürich 2021
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
Unfold 2022 in Bern – by Cleverclip
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Human-centered AI
  • Machine Learning
  • Strategy
Warum Data Science und KI-Initiativen scheitern – eine Reflektion zu nicht-technischen Faktoren
Team statworx
6.12.2024
Mehr erfahren
  • Machine Learning
  • Python
  • Tutorial
Wie man eine Machine Learning API mit Python und Flask erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Human-centered AI
  • Machine Learning
Vorurteile in KI abbauen
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Cloud Technology
  • Data Science
  • Sustainable AI
Wie du als Data Scientist deinen KI CO₂ Fußabdruck verringerst
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Engineering
Automatisierte Erstellung von Docker Containern
Stephan Emmer
6.12.2024
Mehr erfahren
  • Coding
  • Data Visualization
  • R
Anpassung der Zeit- und Datumsskalen in ggplot2
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Machine Learning
5 Typen von Machine Learning Algorithmen (Mit Anwendungsfällen)
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Machine Learning
  • Python
Data Science in Python – Der Einstieg in Machine Learning mit Scikit-Learn
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
2022 und die Reise zu statworx next
Sebastian Heinz
6.12.2024
Mehr erfahren
  • Recap
  • statworx
Als Data Science Praktikant bei statworx
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Science
  • Python
Wie man mit Call Graph automatisch Projektgrafiken erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Human-centered AI
  • Machine Learning
  • statworx
Kolumne: Mensch und Maschine Seite an Seite
Sebastian Heinz
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Machine Learning
Machine Learning Modelle bereitstellen und skalieren mit Kubernetes
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Python
  • Tutorial
statworx Cheatsheets – Python Basics Cheatsheet für Data Science
Team statworx
6.12.2024
Mehr erfahren
  • Cloud Technology
  • Data Engineering
  • Machine Learning

3 Szenarien zum Deployment von Machine Learning Workflows mittels MLflow
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • statworx
  • Strategy
STATWORX meets DHBW – Data Science Real-World Use Cases
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Deep Learning
Car Model Classification I: Transfer Learning mit ResNet
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
Car Model Classification IV: Integration von Deep Learning Modellen mit Dash
Dominique Lade
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning

Car Model Classification III: Erklärbarkeit von Deep Learning Modellen mit Grad-CAM
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Coding
  • Deep Learning
Car Model Classification II: Deployment von TensorFlow-Modellen in Docker mit TensorFlow Serving
Team statworx
6.12.2024
Mehr erfahren
  • AI Act
Potenzial noch nicht ausgeschöpft – Ein Kommentar zur vorgeschlagenen KI-Regulierung der EU
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • statworx
Creaition – Revolutionierung des Designprozesses mit Machine Learning
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Deep Learning
Die 5 wichtigsten Use Cases für Computer Vision
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Data Science
  • Machine Learning
Generative Adversarial Networks: Wie mit Neuronalen Netzen Daten generiert werden können
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
5 Technologien, die jeder Data Engineer kennen sollte
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
  • Machine Learning
5 praxisnahe Beispiele für NLP Use Cases
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Science
  • Deep Learning
Finetuning von Tesseract-OCR für deutsche Rechnungen
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Deep Learning
Neue Trends im Natural Language Processing – Wie NLP massentauglich wird
Dominique Lade
6.12.2024
Mehr erfahren
  • Data Engineering
  • Data Science
  • Machine Learning
Machine Learning Modelle mit Hilfe von Docker Containern bereitstellen
Thomas Alcock
6.12.2024
Mehr erfahren
  • Frontend
  • Python
  • Tutorial
Wie Du ein Dashboard In Python baust – Plotly Dash Step-by-Step Tutorial
Alexander Blaufuss
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Machine Learning
Whitepaper: Ein Reifegradmodell für Künstliche Intelligenz
Team statworx
6.12.2024
Mehr erfahren
  • Data Engineering
  • R
  • Tutorial
Wie Du ShinyApps in Docker-Images einbauen kannst
Team statworx
6.12.2024
Mehr erfahren
  • Recap
  • statworx
STATWORX 2.0 – Das neue Headquarter in Frankfurt ist eröffnet
Julius Heinz
6.12.2024
Mehr erfahren
  • Coding
  • Python
Web Scraping 101 in Python mit Requests & BeautifulSoup
Team statworx
6.12.2024
Mehr erfahren
  • Artificial Intelligence
  • Deep Learning
Deep Learning – Überblick und Einstieg
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • R
  • Statistics & Methods
Wie man eine Kreuzvalidierung zur Evaluation der Modellperformance von Grund auf selbst erstellt
Team statworx
6.12.2024
Mehr erfahren
  • Machine Learning
  • R
  • Statistics & Methods
Was dem MAPE fälschlicherweise vorgeworfen wird, seine WAHREN Schwächen und BESSERE Alternativen!
Team statworx
6.12.2024
Mehr erfahren
  • Data Visualization
  • R
Interaktive Netzwerkvisualisierung mit R
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Tutorial
Eine Einführung in Dataiku DSS
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Visualization
  • Python
Das häufigste Problem mit Plotly Histograms und wie man es löst
Team statworx
6.12.2024
Mehr erfahren
  • Coding
  • Data Engineering
  • R
Wie Du ein R-Skript in Docker ausführst
Team statworx
6.12.2024
Mehr erfahren
  • Data Science
  • Data Visualization
  • Python
Data Science in Python – Matplotlib – Teil 4
Team statworx
6.12.2024
Mehr erfahren
This is some text inside of a div block.
This is some text inside of a div block.