如何在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条件
使用 Relay 和 React-Native 时的条件片段或嵌入的根容器
如何在created()或mounted()中有条件地呈现JS