大佬们, keyby()两次, 然后再window(), 会有几个窗口?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

大佬们, keyby()两次, 然后再window(), 会有几个窗口?

Hongyuan Ma
大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口, 还是在前一次keyby的基础上生成m*n个窗口?


像下面这样写, 最后的窗口是只按area划分的吗?
// 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息
stream.keyby("id")
.flatmap() // 根据id 对轨迹进行预测, 在里面使用key state
.assignTime() // 修改轨迹eventTime为预测出的时间
.keyby("area")
.window() // 根据区域划分窗口
.process() // 统计各个区域内的轨迹

Reply | Threaded
Open this post in threaded view
|

Re: 大佬们, keyby()两次, 然后再window(), 会有几个窗口?

nobleyd
只有最后一个keyBy有效。

Hongyuan Ma <[hidden email]> 于2021年2月21日周日 下午10:59写道:

> 大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口,
> 还是在前一次keyby的基础上生成m*n个窗口?
>
>
> 像下面这样写, 最后的窗口是只按area划分的吗?
> // 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息
> stream.keyby("id")
> .flatmap() // 根据id 对轨迹进行预测, 在里面使用key state
> .assignTime() // 修改轨迹eventTime为预测出的时间
> .keyby("area")
> .window() // 根据区域划分窗口
> .process() // 统计各个区域内的轨迹
>
>
Reply | Threaded
Open this post in threaded view
|

Re: 大佬们, keyby()两次, 然后再window(), 会有几个窗口?

nobleyd
不对,看了你描述没看代码。你代码那么写的化是2个哈。因为你keyBy后做了flatMap,再keyBy就是另外一个了哈。

yidan zhao <[hidden email]> 于2021年2月22日周一 上午10:31写道:

> 只有最后一个keyBy有效。
>
> Hongyuan Ma <[hidden email]> 于2021年2月21日周日 下午10:59写道:
>
>> 大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口,
>> 还是在前一次keyby的基础上生成m*n个窗口?
>>
>>
>> 像下面这样写, 最后的窗口是只按area划分的吗?
>> // 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息
>> stream.keyby("id")
>> .flatmap() // 根据id 对轨迹进行预测, 在里面使用key state
>> .assignTime() // 修改轨迹eventTime为预测出的时间
>> .keyby("area")
>> .window() // 根据区域划分窗口
>> .process() // 统计各个区域内的轨迹
>>
>>
Reply | Threaded
Open this post in threaded view
|

回复: Re: 大佬们, keyby()两次, 然后再window(), 会有几个窗口?

1101300123

为什么flatmap就是2个


发自vivo智能手机

> 不对,看了你描述没看代码。你代码那么写的化是2个哈。因为你keyBy后做了flatMap,再keyBy就是另外一个了哈。
>
> yidan zhao <[hidden email]> 于2021年2月22日周一 上午10:31写道:
>
> > 只有最后一个keyBy有效。
> >
> > Hongyuan Ma <[hidden email]> 于2021年2月21日周日 下午10:59写道:
> >
> >> 大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口,
> >> 还是在前一次keyby的基础上生成m*n个窗口?
> >>
> >>
> >> 像下面这样写, 最后的窗口是只按area划分的吗?
> >> // 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息
> >> stream.keyby("id")
> >> .flatmap() // 根据id 对轨迹进行预测, 在里面使用key state
> >> .assignTime() // 修改轨迹eventTime为预测出的时间
> >> .keyby("area")
> >> .window() // 根据区域划分窗口
> >> .process() // 统计各个区域内的轨迹
> >>
> >>
Reply | Threaded
Open this post in threaded view
|

Re: Re: 大佬们, keyby()两次, 然后再window(), 会有几个窗口?

nobleyd
我突然感觉还是沟通问题。window的只有1个。因为你就写了一个window。
我指的是flatMap和window是分开的算子,不会是1个算子。

hdxg1101300123 <[hidden email]> 于2021年2月22日周一 下午11:37写道:

>
> 为什么flatmap就是2个
>
>
> 发自vivo智能手机
> > 不对,看了你描述没看代码。你代码那么写的化是2个哈。因为你keyBy后做了flatMap,再keyBy就是另外一个了哈。
> >
> > yidan zhao <[hidden email]> 于2021年2月22日周一 上午10:31写道:
> >
> > > 只有最后一个keyBy有效。
> > >
> > > Hongyuan Ma <[hidden email]> 于2021年2月21日周日 下午10:59写道:
> > >
> > >> 大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口,
> > >> 还是在前一次keyby的基础上生成m*n个窗口?
> > >>
> > >>
> > >> 像下面这样写, 最后的窗口是只按area划分的吗?
> > >> // 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息
> > >> stream.keyby("id")
> > >> .flatmap() // 根据id 对轨迹进行预测, 在里面使用key state
> > >> .assignTime() // 修改轨迹eventTime为预测出的时间
> > >> .keyby("area")
> > >> .window() // 根据区域划分窗口
> > >> .process() // 统计各个区域内的轨迹
> > >>
> > >>
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: 大佬们, keyby()两次, 然后再window(), 会有几个窗口?

nobleyd
而如果是连续keyBy,比如.keyBy(xx).keyBy(yy).window()这样keyBy多少此也只最后一个有效,window当然还是只有1个。不会出现多个window的。


yidan zhao <[hidden email]> 于2021年2月23日周二 下午3:31写道:

> 我突然感觉还是沟通问题。window的只有1个。因为你就写了一个window。
> 我指的是flatMap和window是分开的算子,不会是1个算子。
>
> hdxg1101300123 <[hidden email]> 于2021年2月22日周一 下午11:37写道:
>
>>
>> 为什么flatmap就是2个
>>
>>
>> 发自vivo智能手机
>> > 不对,看了你描述没看代码。你代码那么写的化是2个哈。因为你keyBy后做了flatMap,再keyBy就是另外一个了哈。
>> >
>> > yidan zhao <[hidden email]> 于2021年2月22日周一 上午10:31写道:
>> >
>> > > 只有最后一个keyBy有效。
>> > >
>> > > Hongyuan Ma <[hidden email]> 于2021年2月21日周日 下午10:59写道:
>> > >
>> > >> 大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口,
>> > >> 还是在前一次keyby的基础上生成m*n个窗口?
>> > >>
>> > >>
>> > >> 像下面这样写, 最后的窗口是只按area划分的吗?
>> > >> // 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息
>> > >> stream.keyby("id")
>> > >> .flatmap() // 根据id 对轨迹进行预测, 在里面使用key state
>> > >> .assignTime() // 修改轨迹eventTime为预测出的时间
>> > >> .keyby("area")
>> > >> .window() // 根据区域划分窗口
>> > >> .process() // 统计各个区域内的轨迹
>> > >>
>> > >>
>>
>