熊猫UDF不比Spark UDF快吗?

时间:2020-05-12 19:23:46

标签: apache-spark pyspark

我试图从Pyspark网站上获取以下UDF,以了解性能是否有所提高。我输入了很多数字,但是两者都花了几乎相同的时间,我在做什么错了?

谢谢!

import pandas as pd
from pyspark.sql.functions import col, udf
from pyspark.sql.types import LongType
import time

start = time.time()
# Declare the function and create the UDF
def multiply_func(a, b):
    return a * b

multiply = udf(multiply_func, returnType=LongType())

# The function for a pandas_udf should be able to execute with local Pandas data
x = pd.Series(list(range(1, 1000000)))
print(multiply_func(x, x))
# 0    1
# 1    4
# 2    9
# dtype: int64
end = time.time()
print(end-start)

这是熊猫UDF

import pandas as pd
from pyspark.sql.functions import col, pandas_udf
from pyspark.sql.types import LongType
import time

start = time.time()
# Declare the function and create the UDF
def multiply_func(a, b):
    return a * b

multiply = pandas_udf(multiply_func, returnType=LongType())

# The function for a pandas_udf should be able to execute with local Pandas data
x = pd.Series(list(range(1, 1000000)))
print(multiply_func(x, x))
# 0    1
# 1    4
# 2    9
# dtype: int64

1 个答案:

答案 0 :(得分:2)

除非您的数据足够大,以致仅一个节点的火花就无法处理。

熊猫在单个节点上执行所有操作,而spark将数据分发到多个节点进行处理。

因此,如果您在少量数据熊猫上的比较性能可以胜过火花。