So erfassen Sie mit „observ“ in PySpark mehrere Metriken, ohne mehrere Aktionen auszulösenPython

Python-Programme
Anonymous
 So erfassen Sie mit „observ“ in PySpark mehrere Metriken, ohne mehrere Aktionen auszulösen

Post by Anonymous »

Ich habe einen PySpark-Job, der Daten aus Tabelle a liest, einige Transformationen und Filter durchführt und dann das Ergebnis in Tabelle b schreibt.
Hier ist eine vereinfachte Version des Codes:

Code: Select all

import pyspark.sql.functions as F

spark = ...  # initialization

df = spark.table("a").where(F.col("country") == "abc")
df_unique = df.distinct()
users_without_kids = df_unique.where(F.col("kid_count") == 0)

observation = Observation()
observed_df = users_without_kids.observe(observation, F.count(F.lit(1)).alias("row_count"))

observed_df.writeTo("b")
print(observation.get["row_count"])
Das funktioniert gut – ich erhalte die Anzahl der Datensätze, die in Tabelle b geschrieben wurden.
Ich würde jedoch auch gerne wissen:
  • Wie viele Datensätze es direkt nach dem ersten Filter gab (

    Code: Select all

    df
    )
  • Wie viele Datensätze gibt es nach „distinct()“ (

    Code: Select all

    df_unique
    )
Aber ich möchte vermeiden, zusätzliche Aktionen auszulösen (z. B. .count() nicht mehrmals aufzurufen) – idealerweise würde ich gerne alle Metriken in einer einzigen Aktion sammeln (writeTo).
Ich habe versucht, mehrere Beobachtungsaufrufe oder mehrere Metriken zu einer einzelnen Beobachtung hinzuzufügen, aber es scheint nicht zu funktionieren wenn am Ende nur eine Aktion steht.
Frage:
Gibt es in PySpark eine Möglichkeit, mehrere DataFrames (oder mehrere Metriken) in einer Aktion zu beobachten, damit ich diese Zählungen erfassen kann (

Code: Select all

df
, df_unique und users_without_kids), ohne zusätzliche Aufgaben auszuführen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post