Почему в Spark DataFrame работает такая большая разница во времени, когда я использую udf или нет? - PullRequest
0 голосов
/ 08 ноября 2019

В моем тестовом коде я хочу знать количество отфильтрованных данных. Поэтому я оправдал два метода, но есть большая разница во времени. Интересно, есть ли какой-нибудь сложный механизм в udf и что я могу сделать, когда нужно использовать сложную логику фильтра?

# total data count
# the dataType of "time" column is "timestamp" type.
logs_df.count()

# method 1  
import pyspark.sql.functions as f

# consume 2.95s
%time logs_df.filter(f.second(logs_df.time) == 59).count()

# method 2
def sd_filter(x):
    return x.second == 59
u_filter = udf(sd_filter, returnType=BooleanType())

# consume 50.5s
%time logs_df.filter(u_filter(logs_df.time)).count()

код и время, необходимое

Спасибосерия

...