首页 > 解决方案 > 如何将元组值解析为 Person 对象?

问题描述

我在storm中实现了一个Logger Bolt,元组的输入来自Kafka Topic。我正在使用 Kafka Connect 来监听 mySQL 数据库的更改。

public class LoggerBolt extends BaseBasicBolt {

  private static final long serialVersionUID = 1L;
  private static final Logger LOG = Logger.getLogger(LoggerBolt.class);


  public void execute(Tuple input, BasicOutputCollector collector) {
     System.out.println(input.getValue(0));
  }

  public void declareOutputFields(OutputFieldsDeclarer declarer) {
  }
}

在下面的本地集群上运行时会打印出来。

Q�%Buckley, Rose RoseBuckley"BuckleyR@univ.edu"963.555.6855x5018963.777.5233策展人 Q� Stanton, Kathie KathieStanton"StantonK@univ.edu963.555.7095963.777.1015教授 Q�Banks, Shannon Shannon Shannon BanksS@univ.edu63555 .777.6979Professor Q�/Barnes, Cleo CleoBarnes BarnesC@univ.edu"963.555.7463x7335963.777.1583$研究教授

我想将这些细节转换为模型类的 Person 对象?我们如何将 Tuple 输入解析为对象?

我尝试input.getValues(0) , input.getFields(0)了其他方法,似乎没有一个有效。

标签: javaapache-kafkaapache-stormapache-kafka-connect

解决方案


如果您使用storm-kafka-client,它默认采用字符串。您可以通过例如选择其他东西kafkaSpoutConfig.setProp(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class);。您设置的类只需实现 Kafka Deserializer 接口https://kafka.apache.org/11/javadoc/org/apache/kafka/common/serialization/Deserializer.html

设置密钥解串器有一个等效的设置。


推荐阅读