Size: a a a

2017 June 12

NK

ID:68943332 in Data Engineers
tenKe
вопрос то какой?:)
Я думаю, не первая такая и вопрос классический:
Py4JJavaError: An error occurred while calling o186.collectToPython.
: org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 47 tasks (2.0 GB) is bigger than spark.driver.maxResultSize (2.0 GB)

У меня есть датафрейм, есть запрос к нему
sorted(df.groupby('commands').agg({"commands": "count"}).collect())
Суть в том, что как написано выше, мне не хватает памяти на вычисления, но я знаю, что можно решить эту задачу вписываясь в лимит по памяти. Может кто подсказать, в какую сторону копать?
источник

t

tenKe in Data Engineers
а если убрать collect, ошибка будет?
источник

GP

Grigory Pomadchin in Data Engineers
не будет ошибки без коллекта
источник

NK

ID:68943332 in Data Engineers
tenKe
а если убрать collect, ошибка будет?
не будет
источник

GP

Grigory Pomadchin in Data Engineers
попробуй не собирать на драйвер все; что нужно на драйвере иметь?
источник

t

tenKe in Data Engineers
ID:68943332
не будет
а что дальше с данными происходит?
источник

t

tenKe in Data Engineers
как минимум сортировку можно сделать до коллекта
источник

NK

ID:68943332 in Data Engineers
Grigory Pomadchin
попробуй не собирать на драйвер все; что нужно на драйвере иметь?
У меня в таблице, полученной из логов, есть столбец с коммандами, которые вызывались. Мне нужно получить список комманд отсортированных по количеству вхождений в этот самый столбец и количество вхождений в этот столбец.
источник

GP

Grigory Pomadchin in Data Engineers
Да, Андрей верно сказал, сортируй до коллекта
источник

GP

Grigory Pomadchin in Data Engineers
после мапни, .map(_.command); и после этого только коллект делай,чтоб на драйвер только список комманд пришел

не факт что он тоже влезет
источник

t

tenKe in Data Engineers
как вариант, если с памятью туго, сохраните df.write.json() куда нибудь и дальше считывайте по строчке на здоровье
источник

NK

ID:68943332 in Data Engineers
Grigory Pomadchin
Да, Андрей верно сказал, сортируй до коллекта
сорт по каунту будет выглядеть как df.sort(df.commands.count().desc())?
источник

t

tenKe in Data Engineers
df.orderBy('count.desc) в скале
источник

t

tenKe in Data Engineers
в питоне почти также, только вроде к колонке надо явно обратиться
источник

t

tenKe in Data Engineers
еще можно сделать df.withColumn("count_sorted", sort('count))
источник

NK

ID:68943332 in Data Engineers
tenKe
еще можно сделать df.withColumn("count_sorted", sort('count))
О, спасибо, нашла в PySpark этот метод
источник

NK

ID:68943332 in Data Engineers
сейчас потестим
источник

t

tenKe in Data Engineers
нзчт)
источник
2017 June 13

NK

ID:1373407 in Data Engineers
@pomadchin ты по таймзоне восточного берега живешь?
источник

GP

Grigory Pomadchin in Data Engineers
ID:1373407
@pomadchin ты по таймзоне восточного берега живешь?
да когда как
источник