我正在尝试在Ruby中进行avro序列化。我编写了JSON模式,但是我喜欢在Ruby中将序列化数据作为字节而不是写入文件。
我的代码悬挂的内容如下:
SCHEMA = {
"type": "record",
"name": "User",
"fields" :
[
{"name": "name", "type": "string"},
{"name": "id", "type": "long"},
{"name": "city", "type": "string"}
]
}.to_json
schema = Avro::Schema.parse(SCHEMA)
dw = Avro::IO::DatumWriter.new(schema)
buffer = StringIO.new
encoder = Avro::IO::BinaryEncoder.new(buffer)
???
我有name,id和city的值,想知道如何创建User对象并将其序列化为字符串/字节缓冲区。
答案 0 :(得分:4)
弄清楚自己:
schema = Avro::Schema.parse(SCHEMA)
dw = Avro::IO::DatumWriter.new(schema)
buffer = StringIO.new
encoder = Avro::IO::BinaryEncoder.new(buffer)
datum = Hash["name" =>name, "id" => id, "city" => city]
dw.write(datum, encoder)
缓冲区具有生成的avro序列化字节。
看起来Ruby中还没有生成Avro客户端代码。我们必须将数据作为Ruby哈希传递,就像我在基准字段中所做的那样。