Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Logik IF-THEN-ELSE dalam 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 ENDOleh 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!