Что такое обзор сериализации в Spark - PullRequest
2 голосов
/ 09 января 2020

Возможно, кто-то, кто имеет больше опыта в Spark, может помочь со следующими вопросами, связанными с сериализацией:: *

Будет ли следующее точное описание одного из путей сериализации, которые происходят в Spark:

  • RDD --> Bytestream (Java/Kryo)
  • Dataset --> Bytestream (Encoders)

В этом разговоре о RDD, Dataframe и Dataset в искре, было заявлено, что RDD по-прежнему является основной структурой данных, используемой в Spark, и, следовательно, даже Dataset s основывается на RDD

Как следует интерпретировать это утверждение? Означает ли это, что путь сериализации для Dataset:

Dataset -->(encoders) RDD --> Bytestream(Java/kryo)

Или кодировщики также работают при переводе RDD в Bytestream?

1 Ответ

0 голосов
/ 09 января 2020

Прежде всего ни RDD, ни Dataset не сериализуются в целом. Правильно было бы сказать, что в RDD[T] и Dataset[T] каждый элемент типа T сериализуется.

Утверждение, что Dataset построен на RDD s, означает, что Dataset только абстракция для удобства и оптимизации. И всякий раз, когда запускается вычисление Dataset - преобразования Datasets преобразуются в преобразования RDD после применения оптимизаций.

Я не могу точно сказать, как именно он работает в Spark - возможно, только разработчики кто написал, что может ответить на это или кто-то, кто может потратить некоторое время на копание в источниках искры, но предполагается, что, если у нас есть преобразования Dataset[T]:

  1. Когда данные хранятся где-либо - они кодируются используя Encoders
  2. График преобразования построен на RDD[Array[Byte]], потому что 1.

Dataset[T] --(encoders)--> RDD[Array[Byte]]

Надеюсь, что поможет!

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