Bagaimana untuk Melaksanakan Logik IF-THEN-ELSE dalam Spark DataFrames?

Mary-Kate Olsen
Lepaskan: 2024-11-17 04:18:03
asal
254 orang telah melayarinya

How to Implement IF-THEN-ELSE Logic in Spark DataFrames?

Spark Equivalent of IF Then ELSE

Soalan ini menyelidiki tentang mencipta lajur baharu dalam Spark DataFrame berdasarkan peraturan bersyarat.

Isu dengan Fungsi When

Kod yang disediakan cuba menggunakan fungsi when() untuk mencipta lajur baharu bernama "Kelas" berdasarkan nilai dalam lajur "iris_class". Walau bagaimanapun, ia melemparkan ralat yang menyatakan bahawa when() hanya mengambil dua argumen.

Sintaks dan Struktur Betul

Sintaks yang betul untuk fungsi when() ialah:

F.when(condition1, value1).when(condition2, value2)...otherwise(otherwiseValue)
Salin selepas log masuk

Penyelesaian Disyorkan

CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE otherwiseValue
END
Salin selepas log masuk
Oleh itu, kod yang betul untuk mencipta "Kelas" lajur hendaklah:

Sintaks Alternatif

iris_spark_df = iris_spark.withColumn(
    "Class", 
    F.when(iris_spark.iris_class == 'Iris-setosa', 0)
    .when(iris_spark.iris_class == 'Iris-versicolor', 1)
    .otherwise(2)
)
Salin selepas log masuk
Sintaks lain yang sah untuk mencapai hasil yang sama ialah:

Nota pada Hive IF

iris_spark_df = iris_spark.withColumn(
    "Class", 
    F.when(iris_spark.iris_class == 'Iris-setosa', 0)
    .otherwise(
        F.when(iris_spark.iris_class == 'Iris-versicolor', 1)
        .otherwise(2)
    )
)
Salin selepas log masuk
Adalah penting untuk ambil perhatian bahawa bersyarat Hive IF, yang mempunyai sintaks IF(condition, if-true, if-false), tidak disokong dalam Spark. Bersyarat ini hanya boleh digunakan dalam pertanyaan SQL mentah dengan sokongan Hive.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Logik IF-THEN-ELSE dalam Spark DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan