2 つの異なるシナリオで、同じクラスに異なるコーダーを使用しようとしています。
- 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)
システムはどのコーダーを使用するかをどのように選択しますか? 2 つの形式はバイナリ互換性がなく、いくつかの最適化により、2 番目のコーダーは最初のコーダーのみが読み取ることができるデータ形式に使用されるようです。