В моем тестовом коде я хочу знать количество отфильтрованных данных. Поэтому я оправдал два метода, но есть большая разница во времени. Интересно, есть ли какой-нибудь сложный механизм в 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()
код и время, необходимое
Спасибосерия