我知道当涉及矢量化时,pyspark.sql.functions.pandas_udf将比pyspark.ql.functions.udf更快。
但是,如果不涉及矢量化,两者的性能应该相似吗?在两者之间做出选择有什么指导方针吗?
Pandas UDF在大多数情况下应该更快,主要是因为Spark JVM和Python进程之间的数据编码更有效,所以建议尽可能多地使用Pandas。
";正常的";UDF可以在Pandas UDF不能使用的情况下使用,例如,现在它们不能与MapType
、TimestampType
的数组和嵌套的StructType
一起使用。
另外,在使用PySpark时,评估考拉的使用情况可能是有意义的。在我自己的测试中,考拉比使用Pandas UDF的类似代码快大约2倍,尽管精心编写的PySpark代码仍然更快。