Chapter 2 Data Processing Using the DataStream API Event time and watermarks

Event time and watermarks

Flink Streaming API takes inspiration from Google Data Flow model. It supports different concepts of time for its streaming API. In general, there three places where we can capture time in a streaming environment. They are as follows
Flink Streaming API 的灵感源于Google Data Flow模型。它支持不同的时间概念。一般来说,有三个地方可以捕获到时间。分别为:

Event time

The time at which event occurred on its producing device. For example in IoT project, the time at which sensor captures a reading. Generally these event times needs to embed in the record before they enter Flink. At the time processing, these timestamps are extracted and considering for windowing. Event time processing can be used for out of order events.
事件时间是设备产生事件的时间,比如:在IOT项目中,传感器捕获读事件的时间。通常,这些时间在事件还没有进入Flink之前,需要先嵌入到记录里。在处理过程中,提取这些时间戮并考虑时间窗口。事件时间处理可以用于无序事件

Processing time

Processing time is the time of machine executing the stream of data processing. Processing time windowing considers only that timestamps where event is getting processed.Processing time is simplest way of stream processing as it does not require any synchronization between processing machines and producing machines. In distributed asynchronous environment processing time does not provide determinism as it is dependent on the speed at which records flow in the system.
(Processing time 是机器处理数据流的时间。处理时间窗口只考虑事件开始被处理时的时间戮。处理时间是最简单的流处理方式,因为它不需要处理机生产机之间的同步。在分布式异步环境中,处理时间是不确定的,因为这取决于记录在系统中的流动速度。)

Ingestion time

This is time at which a particular event enters Flink. All time based operations refer to this timestamp. Ingestion time is more expensive operation than processing but it gives predictable results. Ingestion time programs cannot handle any out of order events as it assigns timestamp only after the event is entered the Flink system.Here is an example which shows how to set event time and watermarks. In case of ingestion time and processing time, we just need to the time characteristics and watermark generation is taken care automatically. Following is a code snippet for the same.

(这个时间是事件进入flink的时间。所有基于时间的操作都会引用这个时间。Ingestion timeprocessing time更耗时,但它会给出一个可预见的结果。基于Ingestion time的程序不能处理任何乱序事件,因为它会在事件进入Flink系统之后指定时间戮。下面有一个例子,这个例子显示了如何设置event timewatermark。在ingestion timeprocessing time的场景下,我们只需要设置时间特征(Timecharacteriatic),水印会自动生成。下面代码是其中的一个代码片段)
译者注:关于水印的文章http://vishnuviswanath.com/flink_eventtime.html

In Java:

final SreamExecutionEnvironment env=StzeamExecutionEnvizonment. getExecutionEnvironment ();

env.setStreamTimeCharacteristic (Timecharacteriatic.ProceasinqTime);
OR
env.setStreamTimeCharacteristic (Timecharacterietic. Inceationtime);

In Scala:

val env = streamExecutionEnvironment.gerExecutionEnvronment 
env.setStreamTimeCharacteziatic (Timecharacteristic. ProceaaingTime)
OR
env.setStreamTimeCharasteristic (TimeCharacteristic. IngestionTime)

In case of event time stream programs, we need to specify the way to assign watermarks and timestamps. There are two ways of assigning watermarks and timestamps:

  • Directly from data source attribute .
  • Using a timestamp assigner
    evnet time的程序中,我们需要指定水印和时间戮的生成方式。有两种方式指定水印和时间戮。
  • 直接从数据源的属性中获取
  • 使用时间戮分配器

To work with event time streams, we need to assign the time characteristic as follows
处理event time流,我们象下面这种方式指定time characteristic

In Java:

final StreamExecutionEnvironment env =streamExecutionEnvironment.getExecutionEnvironment ();
env.setStreamrimeCharacteriatic (Timecharacteristic.EventTime):

In Scala:

val env = streamExecutionEnvironment. getExecut ionEnvironment;
 env.setStreamrimeCharacteriatic  (Timechazacterigtic. Event Time)

It is always best to store event time while storing the record in source. Flink also supports some pre-defined timestamp extractors and watermark generators. Refer to https://ci.ap ache.org/projects/flink/flink-docs-release-1.2/dev/event_timestamp_extractors.html

把记录存到source的同时存event time总是最好的。Flink 也支持一些pre-defined的时间戮提取器和水印生成器,参见...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容