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中文网其他相关文章!