Pyspark dataframe.limit работает медленно - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь работать с большим набором данных, но просто поиграть с небольшой его частью.Каждая операция занимает много времени, и я хочу посмотреть на head или limit кадра данных.

Так, например, я вызываю UDF (пользовательскую функцию), чтобы добавить столбец,но я забочусь об этом только в первых, скажем, 10 строках.

sum_cols = F.udf(lambda x:x[0] + x[1], IntegerType())
df_with_sum = df.limit(10).withColumn('C',sum_cols(F.array('A','B')))

Однако это все равно займет столько же времени, сколько потребовалось бы, если бы я не использовал limit.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018
Предел

сначала попытается получить необходимые данные из одного раздела.Если он не получает все данные в одном разделе, он получит оставшиеся данные из следующего раздела.

Поэтому, пожалуйста, проверьте, сколько у вас разделов, используя df.rdd.getNumPartition

докажите это, я бы предложил сначала объединить ваш df в один раздел и сделать ограничение.Вы можете видеть, что этот лимит времени быстрее, поскольку он фильтрует данные из одного раздела

0 голосов
/ 26 сентября 2018

Если вы сначала работаете с 10 строками, я думаю, что лучше создать новый df и кэшировать его

df2 = df.limit(10).cache()
df_with_sum = df2.withColumn('C',sum_cols(F.array('A','B')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...