Spark Equivalent of "IF Then ELSE"
Pengenalan:
Spark DataFrame tawaran transformasi cara yang berkuasa untuk memanipulasi data. Satu operasi biasa melibatkan penggunaan transformasi secara bersyarat berdasarkan nilai pembolehubah. Memahami persamaan Spark bagi pernyataan "IF Then ELSE" dalam SQL adalah penting untuk tugasan tersebut.
Soalan:
Seorang pengguna cuba menambah lajur baharu pada Spark DataFrame berdasarkan peraturan bersyarat. Walau bagaimanapun, mereka menghadapi TypeError apabila cuba menggunakan fungsi F.when dengan berbilang keadaan.
TypeError: when() takes exactly 2 arguments (3 given)
Jawapan:
Ralat berlaku kerana F.when fungsi dalam Spark mengharapkan tepat dua argumen: syarat dan nilai untuk dikembalikan apabila syarat dipenuhi. Kod pengguna termasuk hujah tambahan, syarat F.when yang lain, yang merupakan sintaks yang salah.
Sntaks yang betul untuk persamaan "IF Then ELSE" dalam Spark menggunakan F.when ialah sama ada:
(when(col("iris_class") == 'Iris-setosa', 0) .when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2))
atau:
(when(col("iris_class") == 'Iris-setosa', 0) .otherwise(when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2)))
Sintaks pertama menggunakan keadaan F.when bersarang, manakala yang kedua menggunakan fungsi F.sebaliknya.
Pernyataan SQL yang setara ialah ungkapan CASE:
CASE WHEN (iris_class = 'Iris-setosa') THEN 0 ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 ELSE 2 END END
Spark juga menyokong sintaks bersyarat Hive IF, tetapi hanya dalam SQL mentah dengan sokongan Hive:
IF(condition, if-true, if-false)
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!