大佬们, 如果keyby两次然后再调用window()的话是只根据最后一次keyby的键生成n个窗口, 还是在前一次keyby的基础上生成m*n个窗口?
像下面这样写, 最后的窗口是只按area划分的吗? // 我想对不同车(id)的轨迹进行预测, 然后统计各个区域(area)内的轨迹信息 stream.keyby("id") .flatmap() // 根据id 对轨迹进行预测, 在里面使用key state .assignTime() // 修改轨迹eventTime为预测出的时间 .keyby("area") .window() // 根据区域划分窗口 .process() // 统计各个区域内的轨迹 |
只有最后一个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() // 统计各个区域内的轨迹 > > |
不对,看了你描述没看代码。你代码那么写的化是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() // 统计各个区域内的轨迹 >> >> |
为什么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() // 统计各个区域内的轨迹 > >> > >> |
我突然感觉还是沟通问题。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() // 统计各个区域内的轨迹 > > >> > > >> > |
而如果是连续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() // 统计各个区域内的轨迹 >> > >> >> > >> >> > |
Free forum by Nabble | Edit this page |