如何将元组值解析为Person对象?

时间:2019-05-03 06:28:45

标签: java apache-kafka apache-storm apache-kafka-connect

我已经在风暴中实现了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·班克斯(Shannon Shannon)   银行银行S@univ.edu963.555.7198963.777.6979教授   Q·/巴恩斯(Cleo CleoBarnes)   BarnesC@univ.edu“ 963.555.7463x7335963.777.1583 $研究教授

我想将这些详细信息转换为Person类,这是一个模型类? 我们如何将元组输入解析为对象?

我尝试了input.getValues(0) , input.getFields(0)和其他方法,但似乎都没有效果。

1 个答案:

答案 0 :(得分:0)

如果您使用的是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

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