java - 如何将元组值解析为 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)
了其他方法,似乎没有一个有效。
解决方案
如果您使用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。
设置密钥解串器有一个等效的设置。
推荐阅读
- node.js - 使用 google drive.files.copy 时设置新文件名
- r - 是否有用于将 R 内容传递给 LaTeX 命令的 knitr 策略?
- ios - 加载 WKWebview 时,它的 nil
- ruby-on-rails - 数组在我的 Rails(3.2.11) 多选中返回第一个元素空白
- c - hrtimer 状态发生变化,并在通过用户定义的软 uart 驱动程序访问时崩溃
- vb.net - 如何使用 VB.NET 设置首选和备用 DNS 服务器
- reactjs - 为什么路由的可选参数旁边有括号
- amazon-web-services - 跟踪多主 AWS 集群中的主节点故障
- sql - 检索在 SQL 上订购商品的日期
- python - 无法使用熊猫存储多索引 csv 文件