客户端序列化问题:从Trident函数中的Couchbase读取

时间:2015-05-05 22:57:57

标签: serialization apache-storm trident

基本上,我想从Couchbase读取一些来自元组属性的其他属性,例如,元组有输入字段" {a,b,c}",我想发出一个元组" {a,b,c,d,e}"在哪里" d"和" e"从Couchbase读取" a"作为关键。

然而,Trident BaseFunction是可序列化的,而CouchbaseClient不是,它导致" NotSerializable"例外,无论如何都要绕过这个?我能想到两种可能的解决方案:

1)阅读Trident以外的其他属性并将它们一起发送给Trident(我不想这样做因为我想把这种处理放在Storm中)

2)使用状态,这是只读的(只实现多次获取,留下多次放置空白,不确定这是否会起作用)

有没有简单的方法可以做到这一点?这在Storm本身应该是可行的,在现实世界中很常见。它也适用于像Cassandra这样的其他NoSQL数据库。感谢。

1 个答案:

答案 0 :(得分:0)

您可以在函数的prepare()方法中创建数据库连接,或使用queryState一次查找批处理的所有值。