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

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

我在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.5233Curator Q� Stanton, Kathie KathieStanton"StantonK@univ.edu963.555.7095963.777.1015Professor Q�Banks, Shannon Shannon BanksBanksS@univ.edu963.555.7198963.777.6979Professor Q�/Barnes, Cleo CleoBarnes BarnesC@univ.edu"963.555.7463x7335963.777.1583$Research Professor

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

我尝试了 input.getValues(0) 、 input.getFields(0) 和其他方法,似乎都不起作用。

最佳答案

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

有一个用于设置 key 解串器的等效设置。

关于java - 如何将元组值解析为 Person 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964344/

相关文章:

java - 将用户的 OAuth2 token 放入 RestTemplate 中

java -version 结果-bash : java: command not found (in linux)

spring - 水平缩放 spring-kafka 消费者应用程序

apache-kafka - 使用 Kafka Spout 的 Apache Storm 给出错误 : IllegalStateException

java - 日期的子串

java - JDialog 在任务栏中可见

apache-kafka - 我可以在 Kafka 集群中拥有成千上万个主题吗?

oracle - 甲骨文和卡夫卡如何整合

java - 错误 backtype.storm.daemon.executor - java.lang.NoClassDefFoundError : org/I0Itec/zkclient/serialize/ZkSerializer

apache-storm - Storm ClassNotFoundException