我使用的是Storm0.10,我有一个列表,在上面迭代,然后发出元组
for (CustomObject o: List<CustomObject>) {
collector.emit(STREAM_NAME, new Values(o.getFirst, o.getName, o.getAddress));
}
我不想发出多个元组,我只想发出一个元组,它是一个嵌套列表,类似这样,
我的主要问题是关于序列化。阅读storm文档表明java序列化非常昂贵,storm使用kryo序列化。此外,如果没有kryo,常规的javapojo类不应该通过网络发送。所以我想发一封信 List<List<Objects>>
具体如下:,
List<List<Object>> valueList = new ArrayList<List<Object>>();
for (CustomObject o: List<CustomObject>) {
v.add(new ArrayList<Object>{
{
add(o.getFirst);
add( o.getName);
add(o.getAddress);
}
});
}
collector.emit(STREAM_NAME, new Values(valueList));
所以问题是-这是用kryo通过storm完成的吗?
2条答案
按热度按时间bkhjykvo1#
使用kryoserialization。
实施
CustomObjectSerializer
:将customobjectserializer注册到storm配置:
conf.registerSerialization(CustomObject.class,CustomObjectSerializer.class);
9q78igpj2#
你可以简单地发出你的声音
List
,当你在报纸上读到的时候
bolt
这样地,希望有帮助。
编辑:事实上我忘了提到对象必须是
Serializable
! 为了处理这个列表,我会这样做:edit2:因为我背了太多的东西,所以我通过修改
ExclamationBolt
在storm starter exaclamationtopology中看起来像这样。
希望有帮助。