Python中文
首页
教程
问答
标签
搜索
登录
注册
Pyspark UDF可以工作,除非我调用任何内置函数
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试实现pyspark函数来执行半偶数舍入。问题是,如果我只是返回传入的值,构建就会工作。如果它做了其他事情,我会得到一个模糊的错误。以下是我的udf的工作原理:</p> <pre><code>@udf(returnType=DecimalType()) def round_half_even(number): return number </code></pre> <p>我只是在数据帧上的select中调用udf,如下所示:</p> <pre><code>df1 = spark.read... df1.select( df1.COST, round_half_even(f.lit(17.45)).alias('V_COST_TOTAL_CALC') ) </code></pre> <p>但这个实际进行舍入的版本失败了:</p> <pre><code>@udf(returnType=DecimalType()) def round_half_even(number): return round(number, 0) </code></pre> <p>出现此错误时:</p> <pre><code>TypeError: type NoneType doesn't define __round__ method </code></pre> <p>我对Python非常陌生,所以我真的不知道如何找到它。python环境似乎并不真正可用,但这应该是spark的问题,而不是我的问题</p> <p>编辑:复习完这个问题后,我意识到spark有一个bround函数,它可以进行半甚至四舍五入。我仍然需要解决这个问题,因为我有几个UDF都因为同样的原因失败,而这一个似乎是最简单的</p> <p>更新: 空检查确实是导致我的udf失败的原因,因此我对它进行了如下修改(如Hristo Iliev所建议的):</p> <pre><code>@udf(returnType=DecimalType()) def round_half_even(number): return round(number, 0) if number is not None else None </code></pre> <p>这使它得以完成,但现在我得到的只是目标中的空值,即使在上面的示例中传入文本值时也是如此。我已经验证过,应该有成百上千个非空值</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您的参数'number'可能为None,只需在调用round方法之前进行检查即可</p> <p>PS:PySpark UDF中提供了所有Python内置函数。如果要调用任何其他方法/库,则必须在UDF中导入它</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
1 回答
当用户登录到站点时,如何显示不同的导航栏
3 回答
当用户登录时,在Flask中向用户显示处理结果
3 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
7 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
5 回答
当用户的付款逾期2天时,从Django模型检索数据
8 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
10 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
5 回答
当用户确定打印数量时,使用Matplotlib打印动画
9 回答
当用户离开时是否可以删除整个网页?
4 回答
当用户给出一个单词时如何打印?
7 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
5 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
9 回答
当用户被更改时,消息不会来自web套接字
5 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
2 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
3 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
5 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
4 回答
当用户购买某个类别时,是否查找其他类别的销售?
8 回答
当用户转到上一页时,Django和芹菜插入操作
9 回答