avro - GenericDatumWriter 的 Avro 压缩
问题描述
我正在反序列化消费者中的 avro 事件,我实现了一个方法 jsonToAvro 来模拟生产者,但我不知道产生的事件是否包括压缩,所以我试图测试所有编解码器以猜测哪个编解码器被生产者。
此外,我认为如果您未指定任何内容,则默认应用 Snappy 压缩,但所有压缩代码示例都包含在 DataFileWriter 而不是 GenericDatumWriter 中,所以我很困惑,因为默认情况下 Snappy 压缩可能仅适用于将事件写入文件时。
斯卡拉代码:
private def jsonToAvro(json: String, schema: Schema) = {
val reader = new GenericDatumReader[GenericRecord](schema)
val writer = new GenericDatumWriter[GenericRecord](schema)
val output = new ByteArrayOutputStream()
val decoder = DecoderFactory.get.jsonDecoder(schema, json)
val encoder = EncoderFactory.get.binaryEncoder(output, null)
val datum = reader.read(null, decoder)
writer.write(datum, encoder)
encoder.flush()
val byteArray = output.toByteArray
byteArray
}
是否可以为 GenericDatumWriter 设置压缩编解码器?
这个 GenericDatumWriter 默认使用 Snappy 压缩吗?
提前致谢
解决方案
推荐阅读
- sql - SQL 全文搜索不包含精确
- r - 在R中的大矩阵中设置许多值
- c# - 在 ASP.NET Core 5.0 Web API 中实现 DelegatingHandler?
- ubuntu - Xbindkeys 和 xte 滞后
- azure-sql-database - ADF,“复制数据”中的数据转换
- java - 如何检查 udp/组播端口是否打开且可用?
- r - 根据R中另一列中的条件选择两列之间的每一行
- python - 使用 `bokeh` TapTool 打开新绘图
- linux - 在 Linux shell 中,如何使用日期时间捕获 stderr 以记录文件?
- python - 在 Django 中计算一所学校的学生人数