Spark: данные не помещаются в памяти, и я хочу избежать записи их на диск. Могу ли я выполнять итерации с кусочками данных, чтобы использовать только память? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть данные, которые не помещаются в памяти. Итак, я читал по следующим ссылкам:

https://stackoverflow.com/a/32582416/9759150

https://stackoverflow.com/a/29518749/9759150

предыдущие, связанные с этим: https://spark.apache.org/faq.html

Согласно чтению Spark записывает на диск, если данные не помещаются в памяти. Но я хочу избежать записи на диск. Поэтому я хочу знать, могу ли я определить, сколько раз мне нужно выполнять итерации по данным, чтобы обрабатывать их только в памяти. Я могу это сделать? Как?

1 Ответ

0 голосов
/ 29 июня 2018

Это довольно сложно детерминистически найти точное количество времени, которое вам нужно для итерации по набору данных.

После того, как вы прочитаете данные с диска и из кеша, spark материализует набор данных и представит его в памяти в формате вольфрама.

Теперь, какой будет размер набора данных в памяти, который зависит от типа данных различных столбцов вашего набора данных. Также из-за десериализации данных это займет больше памяти, чем данные сериализованного диска.

По моему опыту, для размещения данных паркета в памяти обычно требуется 3-4X памяти. Таким образом, если у вас есть данные 50 ГБ в HDFS в паркете, вероятно, вам нужно около 200 ГБ памяти в кластере для кэширования полных данных.

Вам нужно сделать пробу и ошибку, прежде чем подойдете к идеальному числу здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...