Kafka 存入带有反斜杠问题解决

spring整合卡夫卡引入jar包

<!-- Kafka -->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka-test</artifactId>
    <scope>test</scope>
</dependency>

配置kafka基础参数

1.直接在配置文件application中配置参数基础信息

# KAFKA
spring.kafka.bootstrap-servers=172.31.3.73:9092,172.31.3.74:9092,172.31.3.75:9092
spring.kafka.welder.topic-id=hw_welding_machine
spring.kafka.consumer.group-id=prod-consumers
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=1000
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringSerializer

spring.kafka.producer.value-serializer 是 Spring Kafka 中用于配置生产者的属性之一,它指定了消息值的序列化器。生产者在发送消息到 Kafka 主题时,需要将消息的值进行序列化,以便在网络上传输。

该属性对应的值应该是一个实现了 org.apache.kafka.common.serialization.Serializer 接口的类的全限定名。常见的序列化器包括:

StringSerializer: 将消息值序列化为字符串。
ByteArraySerializer: 将消息值序列化为字节数组。
JsonSerializer: 使用 JSON 格式将消息值序列化。
AvroSerializer: 使用 Avro 格式将消息值序列化。
这种引用可以在代码中直接使用KafkaTemplate

   private final KafkaTemplate<Object, Object> bridge;

    //直接调KafkaTemplate的send方法
    // 第一个参数为topic,第二个参数为要发送的消息
    bridge.send("topic","message");

2.在卡夫卡提供的类中进行修改配置。通过KafkaProducer

private KafkaProducer<Object, Object> producer;

//需要先配置属性
  Properties props = new Properties();
        //卡夫卡连接地址
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"xxx,xxx,xxx");
    	//此处及序列化的信息目前序列化为字符串,将会去掉转义符
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        //消费组        
        props.put("group.id", "xxx");
        props.put("enable.auto.commit", "true");
        props.put("auto.commit.interval.ms", "1000");
        props.put("session.timeout.ms", "30000");
        props.put("auto.offset.reset", "earliest");
 this.producer = new KafkaProducer<Object, Object>(props);
//发消息
        this.producer.send(new ProducerRecord<Object, Object>("topic", null,  JSONUtil.toJsonStr(data)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将Flink从Kafka消费的数据反序列化并存入Hive,可以按照以下步骤进行操作: 1. 配置Kafka消费者和Hive连接 首先需要配置Flink的Kafka消费者和Hive连接,可以使用Flink提供的Kafka连接器和Hive连接器来实现。具体的配置可以参考Flink官方文档进行设置。 2. 设计反序列化类 根据你从Kafka消费的数据格式,需要设计一个反序列化类来将数据转换为Flink中的对象。例如,如果你从Kafka消费的是JSON格式的数据,可以使用Flink提供的JSON反序列化类进行转换。 3. 定义Hive表结构 在Hive中创建一个表来存储反序列化后的数据。你需要定义表的结构,包括列名、列类型和分区等信息。 4. 编写Flink程序 编写一个Flink程序来消费Kafka中的数据,并将数据反序列化后存入Hive表中。具体的实现可以参考以下代码示例: ```java DataStream<String> dataStream = env.addSource(new FlinkKafkaConsumer<String>( "topic", new SimpleStringSchema(), properties)); DataStream<MyObject> myObjects = dataStream.map(new MapFunction<String, MyObject>() { @Override public MyObject map(String value) throws Exception { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(value, MyObject.class); } }); HiveCatalog hiveCatalog = new HiveCatalog("myHiveCatalog", "default", "/path/to/hive/conf"); TableSchema schema = new TableSchema( new String[] {"id", "name", "age"}, new TypeInformation<?>[] {Types.STRING, Types.STRING, Types.INT}); HiveTableSink hiveTableSink = new HiveTableSink( "myDatabase.myTable", schema, hiveCatalog, new Configuration(), "myPartition"); myObjects.addSink(hiveTableSink); ``` 其中,`MyObject`是你从Kafka消费的数据反序列化后的对象,`hiveCatalog`是Hive连接器的配置信息,`schema`是Hive表的列信息,`hiveTableSink`是Hive表的输出目的地。 5. 运行Flink程序 配置好Flink程序后,就可以运行程序了。程序会从Kafka消费数据,将数据反序列化后存入Hive表中。 以上就是将Flink从Kafka消费数据反序列化存入Hive的步骤和示例代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值