Perfect! Then it's pretty much what we discussed here:
https://issues.apache.org/jira/browse/FLINK-3947 and I'm very much in
favour of that. Just the implementation of RocksDB could be a bit tricky
but it should be doable.

Cheers,
Aljoscha

On Wed, 19 Oct 2016 at 11:43 Jark Wu <wuchong...@alibaba-inc.com> wrote:

> Hi Xiaogang,
>
> I think maybe return Set<Map.Entry<K,V>> is better than
> Iterator<Map.Entry<K,V>>.
> Because users can use foreach on Set but not Iterator, and can use
> iterator access via set.iterator().
> Maybe Map.entrySet() is a more familiar way to users.
>
>
> - Jark Wu
>
> > 在 2016年10月19日,下午5:18,SHI Xiaogang <shixiaoga...@gmail.com> 写道:
> >
> > Agreed.
> >
> > contains(K key) should be provided.
> > The iterator() method should return Iterator<Map.Entry<K, V>> instead of
> > Iterator<Tuple2<K, V>>.
> >
> > Besides, size() may also be provided.
> >
> > With these methods, MapStates appear very similar to Java Maps. Users
> will
> > be very happy to use them.
> >
> > Regards,
> > Xiaogang
> >
> >
> > 2016-10-19 16:55 GMT+08:00 Till Rohrmann <trohrm...@apache.org>:
> >
> >> Hi Xiaogang,
> >>
> >> I really like your proposal and think that this would be a valuable
> >> addition to Flink :-)
> >>
> >> For convenience we could maybe add contains(K key), too.
> >>
> >> Java's Map interface returns a Set of Entry when calling entrySet()
> (which
> >> is the equivalent of iterator() in our interface). The Entry interface
> not
> >> only allows to get access to the key and value of the map entry but also
> >> allows to set a value for the respective key via setValue (even though
> it's
> >> an optional operation). Maybe we want to offer something similar when
> >> getting access to the entry set via the iterator method.
> >>
> >> Cheers,
> >> Till
> >>
> >> On Wed, Oct 19, 2016 at 4:18 AM, SHI Xiaogang <shixiaoga...@gmail.com>
> >> wrote:
> >>
> >>> Hi, all. I created the JIRA https://issues.apache.org/
> >>> jira/browse/FLINK-4856 to
> >>> propose adding MapStates into Flink.
> >>>
> >>> MapStates are very useful in our daily jobs. For example, when
> >> implementing
> >>> DistinctCount, we store the values into a MapState and the result of
> each
> >>> group(key) is exactly the number of entries in the MapState.
> >>>
> >>> In my opinion, the methods provided by the MapState may include:
> >>> * void put(K key, V value)
> >>> * V get(K key)
> >>> * Iterable<K> keys()
> >>> * Iterable<V> values()
> >>> * Iterator<Tuple2<K, V>> iterator()
> >>>
> >>> Do you have any comments? Any is appreciated.
> >>>
> >>> Xiaogang
> >>>
> >>
>
>

Reply via email to