如何在没有 UDF 的 Spark 数据帧上实现“else if”?

Geo*_*eRF 5 apache-spark apache-spark-sql pyspark spark-dataframe apache-spark-mllib

下面的链接解释了如何在 Spark 中实现 IF ELSE。

如何在 pyspark.sql.funtions.when() 中使用多个条件?

如果我的火花数据框看起来像这样

A  B  C
10 2 300
20 3 200
30 7 500
20 1 700
Run Code Online (Sandbox Code Playgroud)

但是我如何在火花中实现包含 ELSE IF 的以下逻辑。

If A>=20:
    flag = 1
elif B> 4
    flag = 2
elif C>500
    flag = 3
elif (1<A<20 & B<2)
    flag = 4
elif (1<A<20 & C<300)
    flag = 5
elif (100<C<400 & B>6)
    flag = 6
else flag = 0
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我想要一个直接在 Spark 数据帧上的解决方案,而不需要对 RDD 或 UDF 进行操作。
  • 对于正常的 IF else 条件,我使用 when 链,但是当有很多条件时,很难在所有条件下实现 ElSE IF。