2016-01-15 5 views
2

enter image description here У меня есть вопрос о последующей picture.I использовать data.persist (StorageLevel.MEMORY_AND_DISK_SER) кэшировать наши исходные данные, но что настолько удивлен, что скорость мы кэшируются в памяти такая же, как скорость, которую мы кэшировали на диске? Почему? Я чувствую, что скорость, которую мы кэшировали в памяти, должна быть быстрее скорости, которую мы кэшировали на диске, кто может помочь мне с этой проблемой?Спарк VS кэш-памяти

ответ

1

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

Для уровня стойкости MEMORY_AND_DISK_SER RDD, который может вписываться в память, остался там (такой же, как MEMORY_ONLY), и только если он был слишком большим для памяти, он бы разлился на диск.

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

+0

Спасибо. И мой набор данных составляет 50 г, а -executor-memory по умолчанию 1g, я использую -executor-num 4, как RDD может вставить набор данных в память? – zjw

+1

Это зависит от того, насколько велика ваша RDD в момент, когда вы пытаетесь ее кешировать. Насколько я понимаю, ваш размер набора данных - это размер файла (ов), а не объектов в памяти? Вам понадобится как минимум столько же памяти, сколько и ваш RDD, это первое. Кроме того, вы можете видеть, какой процент RDD кэшируется в памяти на какой-либо вкладке, я не помню, какой именно, просто немного щелкните по нему. – szefuf