如何在Spark中使用AND或OR条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Spark中使用AND或OR条件相关的知识,希望对你有一定的参考价值。

我想在这样的时候评估两个条件: -

import pyspark.sql.functions as F

df = df.withColumn(
    'trueVal', F.when(df.value < 1 OR df.value2  == 'false' , 0 ).otherwise(df.value)) 

为此我使用'OR'得到'无效语法'

即使我尝试使用嵌套的when语句: -

df = df.withColumn(
    'v', 
    F.when(df.value < 1,(F.when( df.value =1,0).otherwise(df.value))).otherwise(df.value)
) 

为此,我得到'keyword can't be an expression'用于嵌套的when语句。

我如何在when中使用多种条件进行任何解决?

答案

pyspark.sql.DataFrame.where以布尔列为条件。使用PySpark时,在阅读“Column”时想到“Column Expression”通常很有用。

PySpark列上的逻辑运算使用bitwise operators

  • &and
  • |or
  • ~not

当将这些与比较运算符(例如<)组合时,通常需要括号。

在您的情况下,正确的陈述是:

import pyspark.sql.functions as F
df = df.withColumn('trueVal',
    F.when((df.value < 1) | (df.value2 == 'false'), 0).otherwise(df.value))

另见:SPARK-8568

以上是关于如何在Spark中使用AND或OR条件的主要内容,如果未能解决你的问题,请参考以下文章

如何在spark sql lag函数中添加if或case条件

片段的条件自定义 OnBackPress

使用 Relay 和 React-Native 时的条件片段或嵌入的根容器

如何在created()或mounted()中有条件地呈现JS

使用 Spark Dataframe 列中的数据作为条件或输入另一个列表达式

片段着色器输出干扰条件语句