#apache-spark #amazon-s3 #pyspark
Вопрос:
Я немного смущен тем, как, например, spark считывает данные из s3. Допустим, из s3 нужно прочитать 100 ГБ данных, а общий объем памяти кластера spark составляет 30 ГБ. Будет ли spark считывать все 100 ГБ данных после запуска действия и сохранять максимальное количество разделов в памяти, а остальное выкладывать на диск, или он будет считывать только те разделы, которые может хранить в памяти, обрабатывать их, а затем считывать остальные данные? Любая ссылка на какую-либо документацию будет высоко оценена.
Ответ №1:
Об этом есть вопрос в разделе часто задаваемых вопросов Spark:
Должны ли мои данные помещаться в память, чтобы использовать Spark?
Нет. Операторы Spark сбрасывают данные на диск, если они не помещаются в память, что позволяет им хорошо работать с данными любого размера. Аналогичным образом, кэшированные наборы данных, которые не помещаются в память, либо выводятся на диск, либо при необходимости пересчитываются на лету, как это определяется уровнем хранилища RDD.
MEMORY_AND_DISK
Храните RDD как десериализованные объекты Java в JVM. Если RDD не помещается в память, сохраните разделы, которые не помещаются на диске, и считывайте их оттуда, когда они понадобятся.
Комментарии:
1. Это относится к данным между задачами или заданиями. Мой вопрос касается первой загрузки данных из такого источника, как s3.