首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Py4JError:调用o230时出错。和

Py4JError:调用o230时出错。和
EN

Stack Overflow用户
提问于 2020-12-28 18:31:00
回答 1查看 580关注 0票数 0

任何人都可以帮助解决这个错误吗?我正在用Pyspark编程,我试着用下面的代码计算一定的偏差:

代码语言:javascript
复制
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))))

即将出现以下错误:

代码语言:javascript
复制
"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此代码,以及其他代码,是一个使用类似语法的不同计算:

代码语言:javascript
复制
Abs_avg = data.select(avg(abs(coalesce(data["pred"], lit(0)) - coalesce(data["val"],lit(0)))))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-28 18:33:32

您需要将条件括在方括号中,否则它将解释为0 & something。此外,您也不需要在(...) != 0中包装...

代码语言:javascript
复制
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
        )
    )
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65476228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档