Apache spark Py4JError:调用o230.and时出错

Apache spark Py4JError:调用o230.and时出错,apache-spark,pyspark,apache-spark-sql,coalesce,py4j,Apache Spark,Pyspark,Apache Spark Sql,Coalesce,Py4j,有人能帮我解决这个错误吗?我正在用Pyspark编程,并试图用以下代码计算某个偏差: Result = data.select(count(((coalesce(data["pred"], lit(0)))!=0 & (coalesce(data["val"],lit(0)) !=0 & (abs(coalesce(data["pred"], lit(0)) - coalesce(data["val&quo

有人能帮我解决这个错误吗?我正在用Pyspark编程,并试图用以下代码计算某个偏差:

Result =   data.select(count(((coalesce(data["pred"], lit(0)))!=0 & (coalesce(data["val"],lit(0)) !=0
& (abs(coalesce(data["pred"], lit(0)) - coalesce(data["val"],lit(0)))/(coalesce(data["val"],lit(0)))) > 0.1))))
出现以下错误:

"Py4JError: An error occurred while calling o230.and. Trace:
py4j.Py4JException: Method and([class java.lang.Integer]) does not exist 
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
    at py4j.Gateway.invoke(Gateway.java:274)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.lang.Thread.run(Thread.java:748)"
我对pyspark编程非常陌生,根本无法发现我的代码有什么问题;我用一个非常相似的代码做了一个非常相似的计算,效果很好。。。有人知道这个问题吗

PS此代码与其他代码一样,是一个具有类似语法的不同计算:

Abs_avg = data.select(avg(abs(coalesce(data["pred"], lit(0)) - coalesce(data["val"],lit(0)))))

您需要将条件括在括号中,否则它将解释为
0&something
。另外,您不需要在
(…)中包装
0

Result = data.select(
    count(
        (coalesce(data["pred"], lit(0)) != 0) & 
        (coalesce(data["val"], lit(0)) != 0) & 
        (abs(
             coalesce(data["pred"], lit(0)) - 
             coalesce(data["val"], lit(0))
            ) / coalesce(data["val"], lit(0)) > 0.1
        )
    )
)

您需要将条件括在括号中,否则它将解释为
0&something
。另外,您不需要在
(…)中包装
0

Result = data.select(
    count(
        (coalesce(data["pred"], lit(0)) != 0) & 
        (coalesce(data["val"], lit(0)) != 0) & 
        (abs(
             coalesce(data["pred"], lit(0)) - 
             coalesce(data["val"], lit(0))
            ) / coalesce(data["val"], lit(0)) > 0.1
        )
    )
)