我在localdrpc中运行了一个简单的三叉戟拓扑,其中一个函数输出 result
字段,但当我运行它时,返回的结果似乎是每个元组的所有信息,而不仅仅是 result
如我所料,给drpc文件。如:
[["http:\/\/www.smbc-comics.com\/rss.php",http://www.smbc-comics.com/rss.php,[#document: null],[item: null],[link: null],[description: null],http://feedproxy.google.com/~r/smbc-comics/PvLb/~3/CBpJmAiJSxs/index.php,http://www.smbc-comics.com/comics/20141001.png,"http:\/\/www.smbc-comics.com\/comics\/20141001.png"], ...]
从每个元组获取所有信息是可以的,但是没有迹象表明哪个字段被称为result。从目前的情况来看,它甚至不是有效的json!
那么,如何提取对应于我在拓扑中指定的特定字段的值呢?
1条答案
按热度按时间3xiyfsfu1#
storm返回json数组中执行链期间处理的每个字段。值的顺序与处理时的顺序相同,因此如果只对最后一个函数的结果感兴趣,则应该只从数组中读取最后一个值。如果出于任何原因你对中间结果不感兴趣,那么你可以用投影法来限制它。例如,如果您有一个流:
那就回来了
然后通过设置投影,可以限制为p2
所以输出只有这个
你可以在这里看到这一点:
https://github.com/exampledriven/storm-example/blob/master/src/test/java/org/exampledriven/exclamationplustridenttopologytest.java