Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Logik IF-THEN-ELSE dalam Spark DataFrames?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 04:18:03255semak imbas

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)

Penyelesaian Disyorkan

CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE otherwiseValue
END
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)
)
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)
    )
)
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!

Kenyataan:
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