Data Engineering
Spark Exasol connector – java.sql.SQLException: [ERROR] Connection String unterstützt das Argument (workerID) nicht.
Der aktuelle exasol Connector (2.1.6) ist nicht kompatibel mit dem aktuellen exasol jdbc Treiber (24.1.1) Kontext Wir haben eine Spark-Datenverarbeitungspipeline, die den Exasol Connector in der Version 1.4 und einen JDBC-Treiber in der Version 7 verwendet. Alles funktionierte einwandfrei, also…
Subtiler Unterschied zwischen einem Dockerfile und einer dockercompose Datei – Variablen im Entrypoint Direktiv
TLDR: Variablen in Entrypoints sollten escaped werden. Dies kann durch die Verwendung eines zweiten $ erreicht werden. Hintergrund Beim Einrichten eines Spark Thrift Servers stieß ich auf ein – im Nachhinein betrachtet – offensichtliches Versehen. Ich würde immer den folgenden…
Spark – Fehler mit UTF8 Kodierung im Docker Image
Im Deutschen gibt es Sonderzeichen, die als Umlaute bekannt sind, unter anderem z.B. ä, ü, ö. Wenn das System nicht korrekt eingestellt ist, kann die Kodierung dieser Zeichen zu einem Informationsverlust führen. Sehen wir uns ein praktisches Beispiel an, bei…
Spark – java.nio.channels.UnresolvedAddressException
Eine sehr kurze Beschreibung des folgenden Fehlers, der anscheinend auch bei dem folgendem Benutzer aufgetreten ist und dokumentiert wurde (github). Dieser Fehlercode kann in verschiedenen Szenarien auftreten. In meiner speziellen Situation war die Lösung jedoch uim Glück ganz simpel Setup…
Exasol – object XXX not found
TLDR: Indentifiers in Exasol werden intern in Großbuchstaben gespeichert. Attribute in der Selektanweisung sollten in Anführungszeichen gesetzt werden. Beobachtung In Exasol habe ich eine benutzerdefinierte Python-Funktion erstellt und zwar wie folgt: Dann versuchte ich, die UDF in einer Select-Anweisung wie…
Python – Pass by object: Praktische Fallstricke
Innerhalb einer Schleife habe ich mehrfach auf ein Objekt in einem Dictionary zugegriffen, es transformiert und visualisiert. Die Absicht war, dass alle Transformationen voneinander isoliert bleiben sollten. Was aber tatsächlich passierte, war, dass sich diese Transformationen aufgrund von Pythons “Pass…
Doppelte Schlüssel bei der Erstellung einer Json aus einem Python Dict
TLDR: Ein dictionary in json behandelt alle Schlüssel als String, während ein Python Dictionay nicht nur zwischen dem Inhalt, sondern auch dem Datentyp unterscheidet (siehe Stackoverflow). Wenn man ein Dictionary in einem json speichert und das Dictionary daraus wieder lädt,…
Superset Guest Token mit Python erstellen, um Superset Dashboard zu embedden
Das große Ziel ist es, ein Superset Dashboard in einer Webanwendung z.B. in REACT einzubetten. Um das zu erreichen, muss unter anderem ein Guest Token (Service Account) erstellt werden. Da dieser Prozess (meiner Meinung nach) nicht ganz ausreichend gut dokumentiert…
Airflow – “Fill Dagbag” dauert zu lange
TLDR: Es ist möglich, DAGs mit nur einem Skript dynamisch zu erstellen. Bei der Ausführung der Tasks wird jedoch das ursprüngliche DAG-Skript noch einmal geparset. Dies führt zu unnötigen Parsing-Iterationen von DAGs, die nicht zum aktuellen Task zugehörig sind. Beobachtung:…
Migration von Kubernetes in ein VCN Natives Cluster in der OCI
Euer managed Kubernetes Cluster in der OCI könnte eine kleine Anzeige besitzen, die besagt, dass eine “Migration erforderlich” ist. Das liegt daran, dass in früheren Releases (vor dem 16. März die der Kubernetes API-Endpunkt von der Container Engine zwar bereitgestellt,…