【Flink SQL】Flink SQL 基础概念,我们用最详细的方式解析大数据开发消息机制的源码

) WITH (
‘connector’ = ‘user_defined’,
‘format’ = ‘json’,
‘class.name’ = ‘flink.examples.sql._03.source_sink.table.user_defined.UserDefinedSource’
);

– 临时视图
CREATE TEMPORARY VIEW query_view as
SELECT *
FROM source_table;

永久表:需要外部 Catalog(例如 Hive Metastore)来持久化表的元数据。一旦永久表被创建,它将对任何连接到这个 Catalog 的 Flink Session 可见且持续存在,直至从 Catalog 中被明确删除。如下案例:

– 永久外部表。需要外部 Catalog 持久化!!!
CREATE TABLE source_table (
user_id BIGINT,
name STRING
) WITH (
‘connector’ = ‘user_defined’,
‘format’ = ‘json’,
‘class.name’ = ‘flink.examples.sql._03.source_sink.table.user_defined.UserDefinedSource’
);

– 永久视图。需要外部 Catalog 持久化!!!
CREATE VIEW query_view as
SELECT *
FROM source_table;

🚀 注意:如果临时表和永久表使用了相同的名称(Catalog名.数据库名.表名)。那么在这个 Flink Session 中,你的任务访问到这个表时,访问到的永远是临时表(即 相同名称的表,临时表会屏蔽永久表)。

2.5 SQL 外部数据表

由于目前在实时数据的场景中多以消息队列作为数据表。此处就以 Kafka 为例创建一个外部数据表。

2.5.1 Table API 创建外部数据表

public static void main(String[] args) throws Exception {

StreamExecutionEnvironment env =
StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());

EnvironmentSettings settings = EnvironmentSettings
.newInstance()
.useBlinkPlanner()
.inStreamingMode()
.build();

StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, settings);

// kafka 数据源
DataStream r = env.addSource(new FlinkKafkaConsumer(xxx));
// 将 DataStream 转为一个 Table API 中的 Table 对象进行使用
Table sourceTable = tEnv.fromDataStream(r
, Schema
.newBuilder()
.column(“f0”, “string”)
.column(“f1”, “string”)
.column(“f2”, “bigint”)
.columnByExpression(“proctime”, “PROCTIME()”)
.build());

tEnv.createTemporaryView(“source_table”, sourceTable);

String selectWhereSql = “select f0 from source_table where f1 = ‘b’”;

Table resultTable = tEnv.sqlQuery(selectWhereSql);

tEnv.toRetractStream(resultTable, Row.class).print();

env.execute();
}

上述案例中,Table API 将一个 DataStream 的结果集通过 StreamTableEnvironment::fromDataStream 转为一个 Table 对象来使用。

2.5.2 SQL API 创建外部数据表

EnvironmentSettings settings = EnvironmentSettings
.newInstance()
.useBlinkPlanner()
.inStreamingMod

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值