Die verkürzten Ausgaben der Zellen von Databricks erfassen

Rafał Chłopek
Rafał Chłopek
June 2, 2025
9 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Die verkürzten Ausgaben der Zellen von Databricks erfassen

Wenn wir eine Capture Databricks-Zelle in der Azure-Umgebung ausführen, erhalten wir normalerweise eine Ausgabe von der Zelle. Das kann so aussehen:

 

Example of a Databricks cell output in the Azure environment showing Spark Jobs execution with a filtered DataFrame and sample data preview.

In den meisten Fällen werden wir mit einem solchen Ansatz nicht auf ein Problem stoßen. Leider gibt es Fälle, in denen Capture Databricks einige Teile der Ausgabe entfernt. Es wird passieren, wenn unser Skript Hunderte von Zeilen in der Ausgabe generiert. Wenn eine so lange Ausgabe den Schwellenwert von Databricks überschreitet (geschätzte Grenze: 128 kB), kehrt das Notebook zurück gekürzte Ausgabe. Wenn die Ausgabe keine wichtigen Informationen enthält, könnten wir damit einverstanden sein. In anderen Fällen müssen wir möglicherweise einige wertvolle Informationen aus der Ausgabe extrahieren, und die Kürzung ruiniert die Auswirkungen unseres Skripts oder verhindert, dass wir die tatsächliche Ausgabe des Notizbuchs kennen.

In unserem Fall sind wir auf dieses Problem gestoßen, als wir große Aufnahmeaufträge ausführen, die eine Verbindung zur Planorama-API und zur Salesforce-API herstellen. Unten sehen wir ein Beispiel für eine verkürzte Ausgabe:

Example of a truncated output warning showing skipped 49206 bytes of output during a large ingestion job connecting to Planorama API and Salesforce API

Unsere Ausgabe gab Hunderte von Ausgabezeilen zurück, aber nur wenige Zeilen waren aussagekräftig. Wir wollten drei Informationen extrahieren: Landesvorwahl, Tag, und Größe herunterladen für dieses Land und diesen Tag. Unten finden Sie ein Beispiel für die Ausgabe, die diese Informationen enthält:

Example of a truncated output showing key details: country code (UK), day (2020-01-02), and download size (19679 bytes) extracted from the log

Dadurch wird eine Variable Capture Databricks (mit der Eigenschaft stdout) vorbereitet, die den Output der Zelle enthält. Später können wir auf diese Eigenschaft zugreifen, wann immer wir den aktuellen Output überprüfen möchten.
Wir bereiten auch eine zusätzliche Liste vor, um den Output während des Ingestion-Prozesses zu speichern:

 
**2. Parsen des Outputs und Speichern der Informationen in Capture Databricks Outputs**    
In diesem Schritt können wir mit capture.stdout die Outputs von Databricks erfassen und relevante Informationen extrahieren. So können wir den Output parsen und nur die benötigten Daten für die weitere Verwendung speichern.  
 
Zum Beispiel haben wir in unserem Fall folgendes Skript verwendet (wichtige Variablen sind hervorgehoben), um country codes, dates und download sizes zu extrahieren. Das Skript wurde in die Ingestion-Schleife eingefügt, sodass wir die WholeOutput-Liste mit den geparsten Daten erweitern konnten:  
 
```  
def simplified_log(log):  
   return [i for i in log.splitlines() if 'Downloaded' in i or 'Ingestion start' in i]  
 
# Durchsuchen des OUTPUT und Ermitteln der download sizes für den Report:  
key, report = '', {}  
WholeOutput.extend(simplified_log(capture.stdout))  
for l in WholeOutput:  
   l = re.sub(r".*?\+\+Ingestion start: ", "*", l)  
   # Extrahieren von CountryCode (1:3) und date (4:14)  
   if l.startswith('*'): key = l[1:3] + ' - ' + l[4:14]  
   if "INFO – Downloaded:" in l:  
       # Nur download size extrahieren  
       l = re.sub(r".*?root - INFO - Downloaded: (.*)", r"\1", l)  
       report[key] = l.strip()  # nur download size speichern  
```  
 
**3. Anzeigen des Reports**    
Der letzte Schritt ist das Anzeigen des HTML-Reports – wie bereits erwähnt – diese Methode ist eine unabhängige Form der Ausgabe unter einer Zelle und Databricks wird unseren Report nicht abschneiden.  
 
Unser Projekt nutzte die folgende einfache Funktion, um den Report anzuzeigen:  
 

Die obige Methode erzeugt den Report, der am Ende jeder Schleifeniteration angezeigt wird – so erhalten wir häufiges Feedback zum Fortschritt des Ingestion-Prozesses.

HTML report showing ingestion progress with a table listing dates and corresponding downloaded data sizes in MB for the country UK.

Databricks verwaltung grosser datensatze

 

Share this post
Databricks
Rafał Chłopek
MORE POSTS BY THIS AUTHOR
Rafał Chłopek

Curious how we can support your business?

TALK TO US