Understanding pandas_udf



pyspark文档中pandas_udf的文档页有以下段落:

用户定义函数不支持条件表达式或布尔表达式中的短路,最终都在内部执行。如果函数可能在特殊行上失败,则解决方法是将条件合并到函数中。

谁能给我解释一下这是什么意思?似乎是说UDF不支持条件语句(if else块),然后建议解决方法是在函数体中包含if else条件。这对我来说没有意义。请帮助

我在《Learning Spark - Lightning-Fast Data Analytics》中读到过类似的内容

第5章-用户定义函数讨论了Spark SQL中的求值顺序和null检查。

如果您的UDF在处理NULL值时可能失败,那么最好将该逻辑移到UDF本身中,就像您提供的引号中所说的那样。

原因如下:

Spark SQL(包括DataFrame API和Dataset API)不保证子表达式的求值顺序。例如,下面的查询不能保证s IS NOT NULL子句在strlen(s)之前执行:
spark.sql("SELECT s FROM test1 WHERE s IS NOT NULL AND strlen(s) > 1")

因此,为了执行正确的空检查,建议您使UDF本身具有空意识,并在UDF内部执行空检查。

相关内容

  • 没有找到相关文章

最新更新