FlinkTable API & SQL

动态表(Dynamic Table)

动态表是Flink的支持流数据的Table APISQL的核心概念。与表示批处理数据的静态表不同,动态表是随时间变化的。可以像查询静态批处理表一样查询它们。查询动态表将生成一个连续查询。一个连续查询永远不会终止,结果会生成一个动态表。查询不断更新其(动态)结果表,以反映其(动态)输入表上的更改。本质上,动态表上的连续查询非常类似于定义物化视图的查询。

连续查询的结果在语义上综是等价于以批处理模式在输入表快照上执行的相同查询的结果。

下图显示了流、动态表和连续查询之间的关系:

Dynamic tables

  1. 将流转换为动态表
  2. 在动态表上计算一个连续查询,生成一个新的动态表
  3. 生成的动态表被转换回流。

DDL语句

创建数据源表

语法:

  CREATE TABLE tableName
      (columnName dataType [, columnName dataType ]*)
      [ WITH (propertyName=propertyValue [, propertyName=propertyValue ]*) ];

示例:

CREATE TABLE  datahub_stream(
  name VARCHAR,
  age BIGINT,
  birthday BIGINT
) WITH (
  type='datahub',
  endPoint='<yourEndpoint>',
  project='<yourProjectName>',
  topic='<yourDataHubTopic>',
  accessId='<yourAccessId>',
  accessKey='<yourAccessSecret>',
  startTime='2017-07-21 00:00:00'
);