Apache flink Flink SQL从无到有

Apache flink Flink SQL从无到有,apache-flink,flink-streaming,flink-sql,data-generation,Apache Flink,Flink Streaming,Flink Sql,Data Generation,早些时候我问弗林克是否可以,答案是肯定的。现在,我将详细介绍Flink SQL的功能 在SQL中,这种挑战有时很容易(例如,SELECT 1在MySQL等常规引擎中工作),但有时也不可能,例如 我对Flink SQL不太确定,它的想法当然是,当您想要运行快速测试或构建一个可移植的示例时,它能够从无到有地创建一些东西,从而消除对其他解决方案的任何硬依赖 为了简单起见: 假设我想每秒至少生成一条消息,并且不介意里面有什么 我的第一个想法: 简单的select语句不会起作用,因为当没有可选择的内容

早些时候我问弗林克是否可以,答案是肯定的。现在,我将详细介绍Flink SQL的功能

在SQL中,这种挑战有时很容易(例如,
SELECT 1
在MySQL等常规引擎中工作),但有时也不可能,例如

我对Flink SQL不太确定,它的想法当然是,当您想要运行快速测试或构建一个可移植的示例时,它能够从无到有地创建一些东西,从而消除对其他解决方案的任何硬依赖

为了简单起见: 假设我想每秒至少生成一条消息,并且不介意里面有什么


我的第一个想法:

  • 简单的select语句不会起作用,因为当没有可选择的内容时,您不会得到任何输出
  • 从概念上讲,一个时间窗口内的计数(*)可以工作,但我还没有让它工作。也许这是一个特性,如果没有什么可计算,输出将是零(而不是0)
除了窗口化,我在Flink SQL中没有看到任何有时间概念的东西,因此在外部我怀疑这是不可能的

我不是在寻找什么:

  • 从一条信息开始,用它创造更多。假设我有一个卡夫卡主题,并且有一条消息进入,那么继续循环它并创建无限多的消息可能是微不足道的。但我的问题更多的是当卡夫卡是空的时候如何开始
  • Flink代码不是SQL,甚至不是其他工具

您可能会发现“datagen”连接器对此很有用

例如:

CREATE TABLE Orders (
order_number BIGINT,
price        DECIMAL(32,2),
buyer        ROW<first_name STRING, last_name STRING>,
order_time   TIMESTAMP(3)
) WITH (
  'connector' = 'datagen'
)
创建表格订单(
订单号BIGINT,
价格小数(32,2),
买方行,
订单时间戳(3)
)与(
'连接器'='数据发生器'
)

您可能会发现“datagen”连接器对此很有用

例如:

CREATE TABLE Orders (
order_number BIGINT,
price        DECIMAL(32,2),
buyer        ROW<first_name STRING, last_name STRING>,
order_time   TIMESTAMP(3)
) WITH (
  'connector' = 'datagen'
)
创建表格订单(
订单号BIGINT,
价格小数(32,2),
买方行,
订单时间戳(3)
)与(
'连接器'='数据发生器'
)
甚至比datagen连接器更好,本手册中的许多示例都使用了datagen连接器。我想你会发现这些例子特别有趣

Flink SQL对处理事件时间和系统时间都有强大的支持,包括。例如,在处理流事件时间窗口和间隔联接时,Flink SQL使用水印来确定哪些记录可以从Flink状态过期

有关利用时间的其他Flink SQL操作,请参阅、和。

甚至比datagen connector更好,中的许多示例都使用了datagen connector。我想你会发现这些例子特别有趣

Flink SQL对处理事件时间和系统时间都有强大的支持,包括。例如,在处理流事件时间窗口和间隔联接时,Flink SQL使用水印来确定哪些记录可以从Flink状态过期


有关利用时间的其他Flink SQL操作,请参阅、和。

稍后将对此进行检查,但看起来确实很有希望!稍后将查看,但看起来确实很有希望!