Avro发数据

该代码示例展示了如何在Scala中使用ApacheAvroschema创建一个Kafka生产者,配置Avro序列化器,并向主题`test-topic`发送包含用户信息(姓名和年龄)的Avro消息。生产者连接到本地Kafka服务器(9092端口)和SchemaRegistry(8081端口),并发送一个包含用户`Alice`的记录。
摘要由CSDN通过智能技术生成

import org.apache.avro.Schema

import org.apache.avro.Schema.Parser

 

val schemaString = """{

  "type": "record",

  "name": "User",

  "fields": [

    {"name": "name", "type": "string"},

    {"name": "age", "type": "int"}

  ]

}"""

val topicName = "test-topic"

val bootstrapServers = "localhost:9092"

 

val schema: Schema = new Parser().parse(schemaString)

然后,创建Kafka生产者并将Avro序列化器设置为值的序列化器。

 

import java.util.Properties

import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}

import io.confluent.kafka.serializers.KafkaAvroSerializer

 

val props = new Properties()

props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers)

props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, classOf[KafkaAvroSerializer].getName)

props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, classOf[KafkaAvroSerializer].getName)

props.put("schema.registry.url", "http://localhost:8081")

 

val producer = new KafkaProducer[String, GenericRecord](props)

创建要发送到Kafka的Avro消息。

 

import org.apache.avro.generic.GenericData.Record

import org.apache.avro.generic.GenericRecord

import org.apache.avro.util.Utf8

 

val user = new Record(schema)

user.put("name", new Utf8("Alice"))

user.put("age", 25)

 

val record = new ProducerRecord[String, GenericRecord](topicName, user)

最后,使用生产者将Avro消息发送到Kafka。

producer.send(record)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值