Я пытаюсь использовать разные кодеры для того же класса для двух различных сценариев:разные кодеры для того же класса в работе потока данных
- Чтение из входных файлов в формате JSON - с помощью
data = TextIO.Read.from(options.getInput()).withCoder(new Coder1())
- В другом месте в работе Я хочу, чтобы класс быть сохранен с использованием
SerializableCoder
использованиемdata.setCoder(SerializableCoder.of(MyClass.class)
Она работает локально, но терпит неудачу при запуске в облаке с
Caused by: java.io.StreamCorruptedException: invalid stream header: 7B227365.
Это поддерживаемый сценарий? Причина этого в первую очередь заключается в том, чтобы избежать чтения/записи формата JSON, а с другой стороны сделать чтение из входных файлов более эффективным (синтаксический анализ UTF-8 является частью JSON-считывателя, поэтому он может напрямую считывать из InputStream)
Пояснения: Coder1 - мой кодер.
Другой кодировщик является SerializableCoder.of(MyClass.class)
Как система выбрать кодер использовать? Эти два формата двоичные несовместимы, и, похоже, из-за некоторой оптимизации, второй кодер используется для формата данных, который может быть прочитан только первым кодером.