我已经在风暴中实现了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)
和其他方法,但似乎都没有效果。
答案 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。
有一个等效的设置,用于设置密钥解串器。