<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>《Apache Flink：使用EventTime与WaterMark进行流数据处理》的评论</title>
	<atom:link href="http://shiyanjun.cn/archives/1785.html/feed" rel="self" type="application/rss+xml" />
	<link>http://shiyanjun.cn/archives/1785.html</link>
	<description>简单之美，难得简单，享受简单的唯美。</description>
	<lastBuildDate>Wed, 19 Feb 2025 08:08:30 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.2</generator>
	<item>
		<title>作者：readily</title>
		<link>http://shiyanjun.cn/archives/1785.html#comment-60101</link>
		<dc:creator><![CDATA[readily]]></dc:creator>
		<pubDate>Wed, 09 May 2018 01:11:01 +0000</pubDate>
		<guid isPermaLink="false">http://shiyanjun.cn/?p=1785#comment-60101</guid>
		<description><![CDATA[原始文档https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/event_time.html]]></description>
		<content:encoded><![CDATA[<p>原始文档https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/event_time.html</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：readily</title>
		<link>http://shiyanjun.cn/archives/1785.html#comment-60100</link>
		<dc:creator><![CDATA[readily]]></dc:creator>
		<pubDate>Wed, 09 May 2018 01:09:45 +0000</pubDate>
		<guid isPermaLink="false">http://shiyanjun.cn/?p=1785#comment-60100</guid>
		<description><![CDATA[这里写反了吧：
&quot;WaterMark带有一个时间戳，假设为X，进入到数据处理系统中的数据元素具有事件时间，记为Y，如果Y=X。如果数据元素的事件时间是有序的，那么当出现一个数据元素的事件时间Y&lt;X，则触发对当前Window计算，并创建另一个新的Window来指派事件时间Y&lt;X的数据元素到该新的Window中。&quot;

watermark代表处理的进度，如果进度为X表示后续不会再有事件事件Y&lt;X了。
所以如果事件时间Y&lt;X，那么表示还有数据没有到达。]]></description>
		<content:encoded><![CDATA[<p>这里写反了吧：<br />
&#8220;WaterMark带有一个时间戳，假设为X，进入到数据处理系统中的数据元素具有事件时间，记为Y，如果Y=X。如果数据元素的事件时间是有序的，那么当出现一个数据元素的事件时间Y&lt;X，则触发对当前Window计算，并创建另一个新的Window来指派事件时间Y&lt;X的数据元素到该新的Window中。&quot;</p>
<p>watermark代表处理的进度，如果进度为X表示后续不会再有事件事件Y&lt;X了。<br />
所以如果事件时间Y&lt;X，那么表示还有数据没有到达。</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：Yanjun</title>
		<link>http://shiyanjun.cn/archives/1785.html#comment-60075</link>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
		<pubDate>Sun, 29 Apr 2018 15:13:56 +0000</pubDate>
		<guid isPermaLink="false">http://shiyanjun.cn/?p=1785#comment-60075</guid>
		<description><![CDATA[一开始，你先不要把Windowing、WaterMark、Trigger三者混在一起去考虑最终输出的结果是什么，建议独立考虑清楚这三者都做了什么，以及三者之间的依赖关系是什么：
1、Windowing：就是负责该如何生成Window，比如Fixed Window、Slide Window，当你配置好生成Window的策略时，Window就会根据时间动态生成，最终得到一个一个的Window，包含一个时间范围：[起始时间, 结束时间)，它们是一个一个受限于该时间范围的事件记录的容器，每个Window会收集一堆记录，满足指定条件会触发Window内事件记录集合的计算处理。
2、WaterMark：它其实不太好理解，可以将它定义为一个函数E=f(P)，当前处理系统的处理时间P，根据一定的策略f会映射到一个事件时间E，可见E在坐标系中的表现形式是一条曲线，根据f的不同曲线形状也不同。假设，处理时间12:00:00，我希望映射到事件时间11:59:30，这时对于延迟30秒以内（事件时范围11:59:30~12:00:00）的事件记录到达处理系统，都指派到时间范围包含处理时间12:00:00这个Window中。事件时间超过12:00:00的就会由Trigger去做补偿了。
3、Trigger：为了满足实际不同的业务需求，对上述事件记录指派给Window未能达到实际效果，而做出的一种补偿，比如事件记录在WaterMark时间戳之后到达事件处理系统，因为已经在对应的Window时间范围之后，我有很多选择：选择丢弃，选择是满足延迟3秒后还是指派给该Window，选择只接受对应的Window时间范围之后的5个事件记录，等等，这都是满足业务需要而制定的触发Window重新计算的策略，所以非常灵活。]]></description>
		<content:encoded><![CDATA[<p>一开始，你先不要把Windowing、WaterMark、Trigger三者混在一起去考虑最终输出的结果是什么，建议独立考虑清楚这三者都做了什么，以及三者之间的依赖关系是什么：<br />
1、Windowing：就是负责该如何生成Window，比如Fixed Window、Slide Window，当你配置好生成Window的策略时，Window就会根据时间动态生成，最终得到一个一个的Window，包含一个时间范围：[起始时间, 结束时间)，它们是一个一个受限于该时间范围的事件记录的容器，每个Window会收集一堆记录，满足指定条件会触发Window内事件记录集合的计算处理。<br />
2、WaterMark：它其实不太好理解，可以将它定义为一个函数E=f(P)，当前处理系统的处理时间P，根据一定的策略f会映射到一个事件时间E，可见E在坐标系中的表现形式是一条曲线，根据f的不同曲线形状也不同。假设，处理时间12:00:00，我希望映射到事件时间11:59:30，这时对于延迟30秒以内（事件时范围11:59:30~12:00:00）的事件记录到达处理系统，都指派到时间范围包含处理时间12:00:00这个Window中。事件时间超过12:00:00的就会由Trigger去做补偿了。<br />
3、Trigger：为了满足实际不同的业务需求，对上述事件记录指派给Window未能达到实际效果，而做出的一种补偿，比如事件记录在WaterMark时间戳之后到达事件处理系统，因为已经在对应的Window时间范围之后，我有很多选择：选择丢弃，选择是满足延迟3秒后还是指派给该Window，选择只接受对应的Window时间范围之后的5个事件记录，等等，这都是满足业务需要而制定的触发Window重新计算的策略，所以非常灵活。</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：53c734b0d206e08fc34e9184ebe0c19b</title>
		<link>http://shiyanjun.cn/archives/1785.html#comment-59809</link>
		<dc:creator><![CDATA[53c734b0d206e08fc34e9184ebe0c19b]]></dc:creator>
		<pubDate>Sun, 04 Mar 2018 11:11:37 +0000</pubDate>
		<guid isPermaLink="false">http://shiyanjun.cn/?p=1785#comment-59809</guid>
		<description><![CDATA[写得很好~~~！！！！]]></description>
		<content:encoded><![CDATA[<p>写得很好~~~！！！！</p>
]]></content:encoded>
	</item>
	<item>
		<title>作者：小李飞菜刀</title>
		<link>http://shiyanjun.cn/archives/1785.html#comment-59808</link>
		<dc:creator><![CDATA[小李飞菜刀]]></dc:creator>
		<pubDate>Sun, 04 Mar 2018 01:36:59 +0000</pubDate>
		<guid isPermaLink="false">http://shiyanjun.cn/?p=1785#comment-59808</guid>
		<description><![CDATA[写得很好~~~！！！！
有几个疑问，请赐教，谢谢！！
假设允许最大延时是30秒，消息时间戳和消息到达顺序如下图（不能直接贴图）：
http://images.cnblogs.com/cnblogs_com/lijie198871/1171027/o_基于eventtime的处理.png

1、何时创建窗口？根据第一条消息的时间戳创建？
2、何时触发窗口计算？如窗口1是不是水位大于等于12:01:00就触发计算？
3、消息5到达时，窗口1已经计算了，如何处理这条数据？直接丢弃？还是可以用trigger来处理？一般如何处理？]]></description>
		<content:encoded><![CDATA[<p>写得很好~~~！！！！<br />
有几个疑问，请赐教，谢谢！！<br />
假设允许最大延时是30秒，消息时间戳和消息到达顺序如下图（不能直接贴图）：<br />
<a href="http://images.cnblogs.com/cnblogs_com/lijie198871/1171027/o_基于eventtime的处理.png" rel="nofollow">http://images.cnblogs.com/cnblogs_com/lijie198871/1171027/o_基于eventtime的处理.png</a></p>
<p>1、何时创建窗口？根据第一条消息的时间戳创建？<br />
2、何时触发窗口计算？如窗口1是不是水位大于等于12:01:00就触发计算？<br />
3、消息5到达时，窗口1已经计算了，如何处理这条数据？直接丢弃？还是可以用trigger来处理？一般如何处理？</p>
]]></content:encoded>
	</item>
</channel>
</rss>
