所有节点上State对象中的映射是否相同?

时间:2016-08-24 08:01:21

标签: java apache-spark

此Spark App在3个节点上运行。我有一个包含HashMap的State对象(MessageState)。这个HashMap包含一个Graph(密钥叶,值父)(并且,不,GraphX不是这个的解决方案)让我们说State对象将变得很大以适应一个节点,因此它将分布在另一个节点上2个节点。如果我想知道叶子它是最上层的父(它会做一些递归函数来遍历整个地图)是否有可能让叶子在节点3和大多数上级父级位于节点1上,它将找不到它,或者火花分布将处理这一点,因此整个地图数据将可用于搜索。我的问题实际上是国家分配是如何运作的。

JavaPairDStream<String, String> inputMessagesStream = readFromKafkaStream1();
   Function3<String, Optional<String>, State<MessageState>, String> messageState = (key, value, state) -> {
                //MessageState contains the HashMap
                if (state.exists()) {
                    return state.get().process(value.get());
                } else {
                    MessageState ms = new MessageState();
                    ms.process(value.get());
                    state.update(ms);
                    return null;
                }
            };

JavaMapWithStateDStream<String, String, MessageState, String> message1 = inputMessagesStream.mapWithState(StateSpec.function(messageState));

0 个答案:

没有答案