2016-02-15 3 views
1

Apache spark утверждает, что он сохранит линии вместо самих RDD, чтобы он мог перекомпрометировать в случае сбоя. Мне интересно, как он хранит линии? Например, RDD может быть создан из группы функций, предоставляемых пользователем, и сохраняет ли он «исходный код этих функций, предоставляемых пользователем»?Как работает Apache Spark?

ответ

4

Упрощение вещей немного RDDs - это рекурсивные структуры данных, которые описывают линии. Каждый RDD имеет a set of dependencies и составляет computed в определенном контексте. Функции, передаваемые действиям и преобразованиям Spark, являются первоклассными объектами, могут быть сохранены, назначены, переданы и захвачены как часть закрытия, и нет оснований (не говоря уже о средствах) для хранения исходного кода.

RDD принадлежат к Driver и не эквивалентны данным. Когда доступ к данным у рабочих, RDD давно прошли, и единственное, что имеет значение, - это задание.

+0

Это хороший ответ, но можете ли вы представить простой пример того, как эти блокировки хранятся и передаются? Я использую слово, хранящееся здесь, потому что, когда я читаю искровую бумагу, он говорит, что это где-то хранится, так что, если узел терпит неудачу, он будет перекомпилировать себя после извлечения. – user1870400

+0

Ну, AFAIK нет ничего особенного для Spark здесь. Это стандартные языковые инструменты. Если вы ищете что-то легкое для понимания, взгляните на python ['globals' и' locals'] (http://stackoverflow.com/q/7969949/1560062), добавьте надежный механизм сериализации (см. «Облако_пикле» Spark) и вы готовы идти. – zero323

+0

ok Cloud_pickle - это более или менее то, что я ищу, но когда я читаю код по приведенной ниже ссылке, похоже, что он действительно хранит байт-код функций, и поскольку в искровом режиме вы можете указать уровень хранения и сказать, что я указываю хранилище уровень как диск Я предполагаю, что байт-код будет сохранен на диске, который может быть дополнительно использован для повторного вычисления RDD позднее. Вы до сих пор согласны? https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py#L282 – user1870400