Matthias, i agree so i've added those two overloads.
Thanks,
Damian

On Thu, 24 Aug 2017 at 21:54 Matthias J. Sax <matth...@confluent.io> wrote:

> Thanks for clarification. I see your point. Java varargs are problematic
> in general IMHO as they force you to put them as last argument making
> parameter ordering unnatural for some cases (as we have it currently in
> the API).
>
> Nevertheless, I think that reading a single topic is the most common
> case and thus I would love to see the overloads as mentioned in my last
> email in addition to the overloads taking a Collection of topics. Maybe
> it's just personal taste -- I agree that the overhead of specifying a
> singleton on not severe, but to me it still feels like a "step backward"
> as reading a single topic should be the pattern for like 90% or more of
> the cases.
>
>
> -Matthias
>
>
> On 8/24/17 12:03 PM, Guozhang Wang wrote:
> > Matthias,
> >
> > I think it's my bad that I did not post another comment on the mailing
> list
> > while syncing with Damian. Here it is:
> >
> > Regarding 1) above, a second thought on varargs: though I have not heard
> > from anyone using multiple topics, it is also true that people will just
> > keep silent until their APIs gets removed. So instead of keeping a single
> > topic name in the constructor, it'd better to still allow users to pass
> > multiple topics, as a Collection<String> topic.
> >
> > It does mean that users who would only want a single topic would feel
> > inconvenient with "Collections.singleton(topic)", but I felt it is not
> too
> > big of an issue. On the other hand KafkaConsumer also only allow
> > `subscribe(Collection<String> topics)` so I'd suggest in this KIP we do
> not
> > have two overloads of "stream(topic)" and "stream(topics)" and consider
> > adding that as a syntax-sugar if it does become a big complaint.
> >
> >
> > Guozhang
> >
> >
> >
> > On Thu, Aug 24, 2017 at 11:32 AM, Matthias J. Sax <matth...@confluent.io
> >
> > wrote:
> >
> >> We now have
> >>
> >>> public synchronized <K, V> KStream<K, V> stream(final
> Collection<String>
> >> topic, final Consumed<K, V> options)
> >>
> >> This would prevent so write code like
> >>
> >> builder.stream("topic", Consumers.with(...));
> >>
> >> I think, we need methods
> >>
> >> StreamsBuilder#stream(String topic);
> >> StreamsBuilder#stream(String topic, Consumed options);
> >>
> >> Or do I miss anything?
> >>
> >>
> >> -Matthias
> >>
> >>
> >> On 8/24/17 1:53 AM, Damian Guy wrote:
> >>> I've updated the kip to reflect Bill's comment and also to make
> >>> StreamBuilder methods have topic as the first param, i.e.,
> >>> StreamBuilder#stream no longer accepts varargs.
> >>>
> >>> On Thu, 24 Aug 2017 at 09:12 Damian Guy <damian....@gmail.com> wrote:
> >>>
> >>>> On Thu, 24 Aug 2017 at 02:49 Guozhang Wang <wangg...@gmail.com>
> wrote:
> >>>>
> >>>>> I have a couple of comments but otherwise it LGTM:
> >>>>>
> >>>>> 1. For these two functions in StreamsBuilder, the topic String is set
> >> as
> >>>>> the second parameter in between of two options. Would that be better
> >> to be
> >>>>> set as the first or the last one instead?
> >>>>>
> >>>>> It would be better as the first, but then it is different to the
> >>>> #streams() methods due to varargs.
> >>>>
> >>>>
> >>>>> public synchronized <K, V> KTable<K, V> table(final Consumed<K, V>
> >>>>> consumed, final String topic, final Materialized<K, V> materialized)
> >>>>>
> >>>>> public synchronized <K, V> GlobalKTable<K, V> globalTable(final
> >>>>> Consumed<K,
> >>>>> V> consumed, final String topic, final Materialized<K, V>
> materialized)
> >>>>>
> >>>>> I understand that we cannot do it for the first parameter because of
> >> the
> >>>>> vararg type. So I'd suggest either
> >>>>>
> >>>>> a) set it as the last parameter, but then it is inconsistent with
> other
> >>>>> functions like these:
> >>>>>
> >>>>> void to(final String topic, final Produced<V, V> options);
> >>>>>
> >>>>> KTable<K, V> through(final String topic, final Materialized<K, V>
> >>>>> options);
> >>>>>
> >>>>> b) only allow one single topic name parameter in
> >> StreamsBuilder.stream()
> >>>>> since in practice we do not see too many usages of multiple topics,
> >> plus
> >>>>> it
> >>>>> can be semi-supported with "merge" as we move it from StreamsBuilder
> to
> >>>>> KStream (KAFKA-5765),
> >>>>>
> >>>>> Perhaps this is the better approach
> >>>>
> >>>>
> >>>>> 2. KGroupedStream's function:
> >>>>>
> >>>>> <VR> KTable<K, VR> aggregate(final Initializer<VR> initializer,
> >>>>>                              final Aggregator<? super K, ? super V,
> VR>
> >>>>> aggregator,
> >>>>>                              final Serde<VR> aggValueSerde,
> >>>>>                              final Materialized<K, VR,
> KeyValueStore<K,
> >>>>> VR>> materialized);
> >>>>>
> >>>>> The "aggValueSerde" seems not needed?
> >>>>>
> >>>>> 3. +1 on `KGroupedStream` v.s. `GroupedKStream`. I think
> KGroupedStream
> >>>>> was
> >>>>> a bad name as a hind-sight. I personally feel we should just correct
> it
> >>>>> with a new class and deprecate / remove the old one before 1.0.0, but
> >> that
> >>>>> could be in its own KIP.
> >>>>>
> >>>>>
> >>>> The problem with this is that we'd need to add new `groupBy` and
> >>>> `groupByKey` methods that return `GroupedKStream`, we can't change the
> >>>> existing ones as that would break compatibility. So what would we name
> >>>> these methods?
> >>>>
> >>>>
> >>>>>
> >>>>> Guozhang
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Wed, Aug 23, 2017 at 1:01 PM, Damian Guy <damian....@gmail.com>
> >> wrote:
> >>>>>
> >>>>>> We already have GlobalKTable and i can't rename KGroupedStream,
> which
> >>>>>> really should be GroupedKStream. So I think we should name new
> things
> >>>>>> correctly, i.e., WindowedKStream etc and fix the others when we can.
> >>>>>>
> >>>>>> On Wed, 23 Aug 2017 at 20:38 Matthias J. Sax <matth...@confluent.io
> >
> >>>>>> wrote:
> >>>>>>
> >>>>>>> About KGroupedStream vs GroupedKStream: shouldn't we keep the
> naming
> >>>>>>> convention consistent? And if we change the naming schema just
> change
> >>>>>>> all at once? I personally don't care which naming scheme is better,
> >>>>> but
> >>>>>>> I think consistency is super important!
> >>>>>>>
> >>>>>>> About Bill's comment: I agree, and had a similar thought.
> >>>>>>>
> >>>>>>>
> >>>>>>> -Matthias
> >>>>>>>
> >>>>>>> On 8/23/17 12:24 PM, Bill Bejeck wrote:
> >>>>>>>> Thanks for all the work on this KIP Damian.
> >>>>>>>>
> >>>>>>>> Both `Produced` and `Joined` have a `with` method accepting all
> >>>>>>> parameters,
> >>>>>>>> but `Consumed` doesn't. Should we add one for consistency?
> >>>>>>>>
> >>>>>>>> Thanks,
> >>>>>>>> Bill
> >>>>>>>>
> >>>>>>>> On Wed, Aug 23, 2017 at 4:15 AM, Damian Guy <damian....@gmail.com
> >
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> KIP has been updated. thanks
> >>>>>>>>>
> >>>>>>>>> On Wed, 23 Aug 2017 at 09:10 Damian Guy <damian....@gmail.com>
> >>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi Matthias,
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> KStream:
> >>>>>>>>>>> leftJoin and outerJoin for KStream/KTable join should not have
> >>>>>>>>>>> `JoinWindows` parameter
> >>>>>>>>>>>
> >>>>>>>>>>> Thanks!
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Nit: TopologyBuilder -> Topology
> >>>>>>>>>>>
> >>>>>>>>>>> Ack
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Nit: new class Serialized list static method #with twice
> >>>>>>>>>>>
> >>>>>>>>>>> Ack
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> WindowedKStream -> for consistency we should either have
> >>>>>>> GroupedKStream
> >>>>>>>>>>> or KWindowedStream... (similar argument for
> >>>>> SessionWindowedKStream)
> >>>>>>>>>>>
> >>>>>>>>>>> We can't rename KGroupedStream -> GroupedKStream without
> breaking
> >>>>>>>>>> compatibility. So we are stuck with it for now. Hopefully in the
> >>>>>> future
> >>>>>>>>> we
> >>>>>>>>>> can rename KGroupedStream to GroupedKStream.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> KGroupedStream
> >>>>>>>>>>> -> why do we use a different name for `sessionWindowedBy()` --
> >>>>> seems
> >>>>>>> to
> >>>>>>>>>>> be cleaner to call both methods `windowedBy()`
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>> I beg to differ that it is cleaner either way!
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> StreamsBuilder#stream -> parameter order is confusing... We
> >>>>> should
> >>>>>>> have
> >>>>>>>>>>> Pattern as second parameter to align both methods.
> >>>>>>>>>>>
> >>>>>>>>>>> Ack
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> StreamsBuilder#table/globalTable -> move parameter `Consumed`
> as
> >>>>>> first
> >>>>>>>>>>> parameter to align with `#stream`
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Ack
> >>>>>>>>>>
> >>>>>>>>>>> Produced#with(Serde, Serde)
> >>>>>>>>>>> Produced#with(StreamPartitioner, Serde, Serde)
> >>>>>>>>>>> -> should StreamPartitioner be the third argument instead of
> the
> >>>>>>> first?
> >>>>>>>>>>>
> >>>>>>>>>>> Sure
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Consumed:
> >>>>>>>>>>> Why do we need 3 different names for the 3 static methods? I
> >>>>> would
> >>>>>> all
> >>>>>>>>>>> of them just call `with()`. Current names sound clumsy to me.
> >>>>> And a
> >>>>>>>>>>> plain `with()` also aligns with the naming of static methods of
> >>>>>> other
> >>>>>>>>>>> classes.
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> I disagree that the names sound clumsy! But yes they should be
> >>>>>> aligned
> >>>>>>>>>> with the others.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> I guess we are also deprecation a bunch of method for
> >>>>>>>>>>> KStream/KTable/KGroupedStream/KGroupedTable and should mention
> >>>>>> which
> >>>>>>>>>>> one? There is just one sentence "Deprecate the existing
> >>>>> overloads.",
> >>>>>>> but
> >>>>>>>>>>> we don't deprecate all existing once. I personally don't care
> to
> >>>>>> much
> >>>>>>> if
> >>>>>>>>>>> we spell deprecated method out explicitly, but right now it's
> not
> >>>>>>>>>>> consistent as we only list methods we add.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Should we deprecate `StateStoreSupplier`?
> >>>>>>>>>>>
> >>>>>>>>>> Yep
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> -Matthias
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On 8/22/17 6:55 AM, Damian Guy wrote:
> >>>>>>>>>>>> I've just updated the KIP with some additional changes
> targeted
> >>>>> at
> >>>>>>>>>>>> StreamsBuilder
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thanks,
> >>>>>>>>>>>> Damian
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Thu, 10 Aug 2017 at 12:59 Damian Guy <damian....@gmail.com
> >
> >>>>>>> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> Got it, thanks.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Does it still make sense to have one static constructors for
> >>>>> each
> >>>>>>>>>>> spec,
> >>>>>>>>>>>>>> with one constructor having only one parameter to make it
> more
> >>>>>>>>> usable,
> >>>>>>>>>>>>>> i.e.
> >>>>>>>>>>>>>> as a user I do not need to give all parameters if I only
> want
> >>>>> to
> >>>>>>>>>>> override
> >>>>>>>>>>>>>> one of them? Maybe we can just name the constructors as
> `with`
> >>>>>> but
> >>>>>>>>>>> I'm not
> >>>>>>>>>>>>>> sure if Java distinguish:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> public static <K, V> Produced<K, V> with(final Serde<K>
> >>>>> keySerde)
> >>>>>>>>>>>>>> public static <K, V> Produced<K, V> with(final Serde<V>
> >>>>>> valueSerde)
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> as two function signatures.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> No that won't work. That is why we have all options, i.e., on
> >>>>>>> Produce
> >>>>>>>>>>>>> public static <K, V> Produced<K, V> with(final Serde<K>
> >>>>> keySerde,
> >>>>>>>>>>> final Serde<V>
> >>>>>>>>>>>>> valueSerde)
> >>>>>>>>>>>>> public static <K, V> Produced<K, V> with(final
> >>>>>> StreamPartitioner<K,
> >>>>>>>>> V>
> >>>>>>>>>>>>> partitioner, final Serde<K> keySerde, final Serde<V>
> >>>>> valueSerde)
> >>>>>>>>>>>>> public static <K, V> Produced<K, V> keySerde(final Serde<K>
> >>>>>>> keySerde)
> >>>>>>>>>>>>> public static <K, V> Produced<K, V> valueSerde(final Serde<V>
> >>>>>>>>>>> valueSerde)
> >>>>>>>>>>>>> public static <K, V> Produced<K, V> streamPartitioner(final
> >>>>>>>>>>> StreamPartitioner<K,
> >>>>>>>>>>>>> V> partitioner)
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> So if you only want to use one you can just use the function
> >>>>> that
> >>>>>>>>> takes
> >>>>>>>>>>>>> one argument.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Guozhang
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Wed, Aug 9, 2017 at 6:20 AM, Damian Guy <
> >>>>> damian....@gmail.com
> >>>>>>>
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On Tue, 8 Aug 2017 at 20:11 Guozhang Wang <
> >>>>> wangg...@gmail.com>
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Damian,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Thanks for the proposal, I had a few comments on the APIs:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 1. Printed#withFile seems not needed, as users should
> always
> >>>>>> spec
> >>>>>>>>> if
> >>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>> to sysOut or to File at the beginning. In addition as a
> >>>>> second
> >>>>>>>>>>>>>> thought, I
> >>>>>>>>>>>>>>>> think serdes are not useful for prints anyways since we
> >>>>> assume
> >>>>>>>>>>>>>> `toString`
> >>>>>>>>>>>>>>>> is provided except for byte arrays, in which we will
> special
> >>>>>>>>> handle
> >>>>>>>>>>>>>> it.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> +1
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Another comment about Printed in general is it differs
> with
> >>>>>> other
> >>>>>>>>>>>>>> options
> >>>>>>>>>>>>>>>> that it is a required option than optional one, since it
> >>>>>> includes
> >>>>>>>>>>>>>>> toSysOut
> >>>>>>>>>>>>>>>> / toFile specs; what are the pros and cons for including
> >>>>> these
> >>>>>>> two
> >>>>>>>>>>> in
> >>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>> option and hence make it a required option than leaving
> >>>>> them at
> >>>>>>>>> the
> >>>>>>>>>>>>>> API
> >>>>>>>>>>>>>>>> layer and make Printed as optional for mapper / label
> only?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> It isn't required as we will still have the no-arg print()
> >>>>> which
> >>>>>>>>> will
> >>>>>>>>>>>>>> just
> >>>>>>>>>>>>>>> go to sysout as it does now.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 2.1 KStream#through / to
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> We should have an overloaded function without Produced?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Yes - we already have those so they are not part of the
> KIP,
> >>>>>> i.e,
> >>>>>>>>>>>>>>> through(topic)
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 2.2 KStream#groupBy / groupByKey
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> We should have an overloaded function without Serialized?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Yes, as above
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 2.3 KGroupedStream#count / reduce / aggregate
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> We should have an overloaded function without
> Materialized?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> As above
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 2.4 KStream#join
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> We should have an overloaded function without Joined?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> as above
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 2.5 Each of KTable's operators:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> We should have an overloaded function without Produced /
> >>>>>>>>> Serialized
> >>>>>>>>>>> /
> >>>>>>>>>>>>>>>> Materialized?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> as above
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 3.1 Produced: the static functions have overlaps, which
> >>>>> seems
> >>>>>> not
> >>>>>>>>>>>>>>>> necessary. I'd suggest jut having the following three
> static
> >>>>>> with
> >>>>>>>>>>>>>> another
> >>>>>>>>>>>>>>>> three similar member functions:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public static <K, V> Produced<K, V> withKeySerde(final
> >>>>> Serde<K>
> >>>>>>>>>>>>>> keySerde)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public static <K, V> Produced<K, V> withValueSerde(final
> >>>>>> Serde<V>
> >>>>>>>>>>>>>>>> valueSerde)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public static <K, V> Produced<K, V>
> >>>>> withStreamPartitioner(final
> >>>>>>>>>>>>>>>> StreamPartitioner<K, V> partitioner)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> The key idea is that by using the same function name
> string
> >>>>> for
> >>>>>>>>>>> static
> >>>>>>>>>>>>>>>> constructor and member functions, users do not need to
> >>>>> remember
> >>>>>>>>> what
> >>>>>>>>>>>>>> are
> >>>>>>>>>>>>>>>> the differences but can call these functions with any
> >>>>> ordering
> >>>>>>>>> they
> >>>>>>>>>>>>>> want,
> >>>>>>>>>>>>>>>> and later calls on the same spec will win over early
> calls.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> That would be great if java supported it, but it doesn't.
> You
> >>>>>>> can't
> >>>>>>>>>>> have
> >>>>>>>>>>>>>>> static an member functions with the same signature.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 3.2 Serialized: similarly
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public static <K, V> Serialized<K, V> withKeySerde(final
> >>>>>> Serde<K>
> >>>>>>>>>>>>>>> keySerde)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public static <K, V> Serialized<K, V> withValueSerde(final
> >>>>>>>>> Serde<V>
> >>>>>>>>>>>>>>>> valueSerde)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public Serialized<K, V> withKeySerde(final Serde<K>
> >>>>> keySerde)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public Serialized<K, V> withValueSerde(final Serde
> >>>>> valueSerde)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> as above
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Also it has a final Serde<V> otherValueSerde in one of its
> >>>>>> static
> >>>>>>>>>>>>>>>> constructor, it that intentional?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Nope: thanks.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 3.3. Joined: similarly, keep the static constructor
> >>>>> signatures
> >>>>>>> the
> >>>>>>>>>>>>>> same
> >>>>>>>>>>>>>>> as
> >>>>>>>>>>>>>>>> its corresponding member fields.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> As above
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 3.4 Materialized: it is a bit special, and I think we can
> >>>>> keep
> >>>>>>> its
> >>>>>>>>>>>>>> static
> >>>>>>>>>>>>>>>> constructors with only two `as` as they are today.K
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 4. Is there any modifications on StateStoreSupplier? Is it
> >>>>>>> replaced
> >>>>>>>>>>> by
> >>>>>>>>>>>>>>>> BytesStoreSupplier? Seems some more descriptions are
> lacking
> >>>>>>> here.
> >>>>>>>>>>>>>> Also
> >>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> No modifications to StateStoreSupplier. It is superseceded
> by
> >>>>>>>>>>>>>>> BytesStoreSupplier.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> public static <K, V, S extends StateStore> Materialized<K,
> >>>>> V,
> >>>>>> S>
> >>>>>>>>>>>>>>>> as(final StateStoreSupplier<S>
> >>>>>>>>>>>>>>>> supplier)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Is the parameter in type of BytesStoreSupplier?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Yep - thanks
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Guozhang
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Thu, Jul 27, 2017 at 5:26 AM, Damian Guy <
> >>>>>>> damian....@gmail.com
> >>>>>>>>>>
> >>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Updated link:
> >>>>>>>>>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>>>>>>>>>>>>>> 182%3A+Reduce+Streams+DSL+overloads+and+allow+easier+
> >>>>>>>>>>>>>>>>> use+of+custom+storage+engines
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>>> Damian
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On Thu, 27 Jul 2017 at 13:09 Damian Guy <
> >>>>> damian....@gmail.com
> >>>>>>>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> I've put together a KIP to make some changes to the
> >>>>>>> KafkaStreams
> >>>>>>>>>>>>>> DSL
> >>>>>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>>>> will hopefully allow us to:
> >>>>>>>>>>>>>>>>>> 1) reduce the explosion of overloads
> >>>>>>>>>>>>>>>>>> 2) add new features without having to continue adding
> more
> >>>>>>>>>>>>>> overloads
> >>>>>>>>>>>>>>>>>> 3) provide simpler ways for people to use custom storage
> >>>>>>> engines
> >>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>> wrap
> >>>>>>>>>>>>>>>>>> them with logging, caching etc if desired
> >>>>>>>>>>>>>>>>>> 4) enable per-operator caching rather than global
> caching
> >>>>>>>>> without
> >>>>>>>>>>>>>>>> having
> >>>>>>>>>>>>>>>>>> to resort to supplying a StateStoreSupplier when you
> just
> >>>>>> want
> >>>>>>>>> to
> >>>>>>>>>>>>>>> turn
> >>>>>>>>>>>>>>>>>> caching off.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> The KIP is here:
> >>>>>>>>>>>>>>>>>> https://cwiki.apache.org/confluence/pages/viewpage.
> >>>>>>>>>>>>>>>>> action?pageId=73631309
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>>>> Damian
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>> -- Guozhang
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> --
> >>>>>>>>>>>>>> -- Guozhang
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> -- Guozhang
> >>>>>
> >>>>
> >>>
> >>
> >>
> >
> >
>
>

Reply via email to