Мне нужно сделать n таблиц из небольшого набора данных (145 тыс. Строк), сделанного из запроса, и способы, которые я пробовал, использовали collect()
и cache()
, но collect()
закончился намного быстрее, чем cache()
(5 секунд против 30 секунд ....)
Примеры, которые я использую.
collect ():
df = spark.sql(query).collect()
list_a = [Row(col1=i['col1']) for i in df if i['col2'] == 'test']
list_b = [Row(col1=i['col1']) for i in df if i['col2'] == 'derp']
cache ():
df=spark.sql(query)
df.cache()
list_a = df.filter(df['col2'] == 'test').select('col1').collectAsList()
list_b = df.filter(df['col2'] == 'derp').select('col1').collectAsList()
Есть ли другой способ, который быстрее, чем collect()
?
Является ли collect()
лучше для небольших наборов данных или ничего не стоит?