为啥代码有问题?我连接到集群

Posted

技术标签:

【中文标题】为啥代码有问题?我连接到集群【英文标题】:Why is there a problem with the code? I am connected to the clusters为什么代码有问题?我连接到集群 【发布时间】:2019-09-23 04:56:46 【问题描述】:

我试图应用 UDF 函数来舍入这些 pct,也许有更好的方法,我对此持开放态度,因为我是 pyspark 的新手。 当我删除 udf 函数以放弃对数字进行四舍五入时,它起作用了,因此我对数据框充满信心。

所以各位,天才,请帮助我,爱与和平

我在 databricks 中尝试了 spqrk.sql 来获取这个数据框,它看起来不错。

代码如下:

from pyspark.sql.types import IntegerType

round_func = udf(lambda x:round(x,2), IntegerType())

q2_res = q2_res.withColumn('pct_DISREGARD', round_func(col('pct')))

display(q2_res)

错误: AttributeError: 'NoneType' 对象没有属性 '_jvm'

【问题讨论】:

【参考方案1】:

显然我们不能将任何pyspark.sql.functions 与udf 一起使用。 this线程中给出了详细的解释。您正在尝试使用 round 函数,因此它不起作用,因为它仅适用于列。我们可以用更简单的方式实现相同的功能:

from pyspark.sql.types import IntegerType
import pyspark.sql.functions as f

q2_res = q2_res.withColumn('pct_DISREGARD', f.round('pct', 2).astype(IntegerType()))

通常建议尽可能避免使用 UDF,因为它们通常比原生数据帧操作慢。

【讨论】:

以上是关于为啥代码有问题?我连接到集群的主要内容,如果未能解决你的问题,请参考以下文章

为啥func调用中的代码块没有被执行?

如果我连接到 mysql,如何通过 python 导入我的模块?

为啥我的一些 kubernetes 节点无法连接到我的 postgres 集群而其他节点成功?

msSQL jdbc .. 我连接到服务器但如何连接到使用特定的 databaseName

当我连接到 MongoDB 时出现 Mistic 问题

当我连接到 MongoDB 时出现 Mistic 问题