[PYTHON] Verarbeitungsreihenfolge beim Verketten im PySpark

Als ich Code geschrieben habe, um "wann" in PySpark zu verketten

"Hat dies Vorrang vor dem zuvor geschriebenen" Wann ", genau wie bei SQL?" "Da es sich um eine Methodenkette handelt, wird sie durch das" Wann "am Ende überschrieben?"

Ich war besorgt, also schrieb ich den Bestätigungscode und untersuchte ihn.

Dummy-Daten

df = spark.createDataFrame([(1,),(2,),(3,)], schema=('val',))
display(df)
val
1
2
3

Für Spark SQL

#Registrieren Sie sich als temporäre Tabelle, um sie über Spark SQL zu berühren
df.registerTempTable('tmp')
SELECT
  val,
  CASE
    WHEN val <= 1 THEN 'label_1'
    WHEN val <= 2 THEN 'label_2'
    ELSE 'label_3'
  END AS label
FROM tmp
val label
1 label_1
2 label_2
3 label_3

Im Fall von SQL hat natürlich die zuvor geschriebene Bedingung "WANN" Vorrang.

Für PySpark

from pyspark.sql import functions as F

df_label = df.withColumn('label',
    F.when(F.col('val') <= 1, 'label_1')
     .when(F.col('val') <= 2, 'label_2')
     .otherwise('label_3')
)
display(df_label)
val label
1 label_1
2 label_2
3 label_3

Selbst wenn "Wann" in PySpark verkettet ist, scheint die Bedingung "Wann", die zuvor geschrieben wurde, Priorität zu haben, wie in Spark SQL.

Recommended Posts

Verarbeitungsreihenfolge beim Verketten im PySpark
Iterative (rekursive) Verarbeitung mit tkinter (in der Reihenfolge angezeigt)
Dateiverarbeitung in Python
Multithread-Verarbeitung in Python
Ich erhalte eine java.util.regex.PatternSyntaxException, wenn ich einen String in PySpark teile
Textverarbeitung mit Python
Verarbeitung in Python beenden
Dinge, die Sie bei der Verarbeitung von Zeichenfolgen in Python2 beachten sollten
Dinge, die Sie bei der Verarbeitung von Zeichenfolgen in Python 3 beachten sollten
Natürliche Ordnung in Python
UTF8-Textverarbeitung mit Python
Asynchrone Verarbeitung (Threading) in Python
Achtung bei os.mkdir in Python
Bildverarbeitungssammlung in Python
Sellerie asynchrone Verarbeitung in Flask
Verwenden des Python-Modus in der Verarbeitung