要提供Avro的示例输入,您可以按照以下步骤进行操作:
下面是一个示例的Avro模式定义(使用JSON格式):
{
"type": "record",
"name": "Example",
"fields": [
{"name": "name", "type": "string"},
{"name": "age", "type": "int"},
{"name": "address", "type": "string"}
]
}
下面是一个示例的Avro数据实例(使用JSON格式):
{
"name": "John",
"age": 25,
"address": "123 Main St"
}
下面是一个示例的Java代码,使用Avro的Java API将Avro数据实例序列化为字节流:
import org.apache.avro.Schema;
import org.apache.avro.io.*;
import org.apache.avro.generic.*;
public class AvroExample {
public static void main(String[] args) throws Exception {
// 定义Avro模式
String schemaJson = "{\"type\":\"record\",\"name\":\"Example\",\"fields\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"age\",\"type\":\"int\"},{\"name\":\"address\",\"type\":\"string\"}]}";
Schema schema = new Schema.Parser().parse(schemaJson);
// 创建Avro数据实例
GenericRecord record = new GenericData.Record(schema);
record.put("name", "John");
record.put("age", 25);
record.put("address", "123 Main St");
// 创建Avro编码器
DatumWriter writer = new GenericDatumWriter<>(schema);
ByteArrayOutputStream out = new ByteArrayOutputStream();
Encoder encoder = EncoderFactory.get().binaryEncoder(out, null);
// 序列化Avro数据实例为字节流
writer.write(record, encoder);
encoder.flush();
byte[] serializedData = out.toByteArray();
// 打印序列化后的字节流
System.out.println("Serialized Data: " + serializedData);
}
}
上述代码使用Avro的Java API定义了Avro模式,并创建了一个Avro数据实例。然后,它将数据实例序列化为字节流,并打印出序列化后的字节流。
请注意,您需要在项目中添加Avro的依赖库,以便在代码中使用Avro的类和方法。