首页  >  文章  >  后端开发  >  如何使用“when()”在 Spark 中实现 IF-THEN-ELSE 逻辑?

如何使用“when()”在 Spark 中实现 IF-THEN-ELSE 逻辑?

Susan Sarandon
Susan Sarandon原创
2024-11-18 07:09:02547浏览

How to Implement IF-THEN-ELSE Logic in Spark Using `when()`?

IF then ELSE 的 Spark 等效项

在此示例中,我们的目标是向“iris_spark”DataFrame 添加一个新列“Class”基于现有分类列“iris_class”的值,该列具有三个不同的

但是,提供的代码遇到错误:

iris_spark_df = iris_spark.withColumn(
    "Class", 
   F.when(iris_spark.iris_class == 'Iris-setosa', 0, F.when(iris_spark.iris_class == 'Iris-versicolor',1)).otherwise(2))

错误消息表明 Spark 中的 when() 函数仅接受两个参数,与提供的代码相反。

为了解决这个问题,使用when()函数的正确结构是任一:

(when(col("iris_class") == 'Iris-setosa', 0)
.when(col("iris_class") == 'Iris-versicolor', 1)
.otherwise(2))

(when(col("iris_class") == 'Iris-setosa', 0)
    .otherwise(when(col("iris_class") == 'Iris-versicolor', 1)
        .otherwise(2)))

这些表达式相当于 SQL CASE 语句:

CASE 
    WHEN (iris_class = 'Iris-setosa') THEN 0
    WHEN (iris_class = 'Iris-versicolor') THEN 1 
    ELSE 2
END

CASE WHEN (iris_class = 'Iris-setosa') THEN 0 
     ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 
               ELSE 2 
          END 
END

Spark中when()的一般语法是:

when(condition, value).when(...)

when(condition, value).otherwise(...)

注意,Spark 中不直接支持 Hive IF 条件表达式 IF(condition, if-true, if-false),只能是在具有 Hive 支持的原始 SQL 中使用。

以上是如何使用“when()”在 Spark 中实现 IF-THEN-ELSE 逻辑?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn