【发布时间】:2020-12-19 00:00:44
【问题描述】:
我了解当涉及矢量化时,pyspark.sql.functions.pandas_udf 会比pyspark.sql.functions.udf 快。
但是如果不涉及矢量化怎么办,两者的性能应该相似吗?在两者之间进行选择是否有任何指导原则?
【问题讨论】:
标签: apache-spark pyspark user-defined-functions
我了解当涉及矢量化时,pyspark.sql.functions.pandas_udf 会比pyspark.sql.functions.udf 快。
但是如果不涉及矢量化怎么办,两者的性能应该相似吗?在两者之间进行选择是否有任何指导原则?
【问题讨论】:
标签: apache-spark pyspark user-defined-functions
Pandas UDF 在大多数情况下应该更快,主要是因为 Spark JVM 和 Python 进程之间的数据编码更有效,因此建议尽可能使用 Pandas UDF。
“正常”UDF 可用于Pandas UDFs couldn't be used 的情况,例如,现在它们不适用于MapType、TimestampType 的数组和嵌套的StructType。
附:此外,在使用 PySpark 时,评估 Koalas 的使用可能是有意义的。在我自己的测试中,Koalas 比使用 Pandas UDF 的类似代码快约 2 倍,尽管精心编写的 PySpark 代码仍然更快。
【讨论】: