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.
df = spark.createDataFrame([(1,),(2,),(3,)], schema=('val',))
display(df)
val |
---|
1 |
2 |
3 |
#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.
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