我正在尝试在两个不同的场景中为同一个类使用不同的编码器:
- 从 JSON 输入文件中读取 - 使用
data = TextIO.Read.from(options.getInput()).withCoder(new Coder1())
- 在工作的其他地方,我希望使用
SerializableCoder
usingdata.setCoder(SerializableCoder.of(MyClass.class)
它在本地工作,但在云中运行时失败
Caused by: java.io.StreamCorruptedException: invalid stream header: 7B227365.
它是受支持的方案吗?这样做的原因首先是为了避免读取/写入 JSON 格式,另一方面使从输入文件中读取更高效(UTF-8 解析是 JSON 读取器的一部分,因此可以直接从 InputStream 读取)
澄清:Coder1 是我的编码器。
另一个编码器是 SerializableCoder.of(MyClass.class)
系统如何选择使用哪个编码器?这两种格式是二进制不兼容的,看起来由于一些优化,第二个编码器用于只能由第一个编码器读取的数据格式。