Flink1.11 Table/SQL API 入门

Flink快速入门-11.Flink 中 Table API 和 SQL 在 Spark 中,最基础的编程模型是 RDD 编程。但是并不是所有的程序员都能够用 RDD 很好地处理数据,所以 Spark 社区在 RDD 的基础上增加了关系型编程接口 Spark DataFrame 和 Spark SQL。Spark DataFrame 和 Spark SQL 的出现,大大降低了 Spark 的使用门槛,使那些并不擅长 Scala 以及只会 SQL 的程序员和数据分析师也能利用 Spark 的分析能力进行大数据分析。 阅读详情

下面是一个table api的模板。

主要实现的功能是通过SQL API创建kafka source表和es sink表,然后将source表的数据插入到sink表中。

当然实际上下面的代码有两个sink,除了sink到es以外还sink到了控制台。

依赖

<dependencies>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_${scala.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge_2.11</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge_2.11</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner-blink_2.11</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-scala_2.11</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka_${scala.version}</artifactId>
            <version>${flink.version}</version>
            <!--            <scope>provided</scope>-->
        </dependency>
    </dependencies>

代码

package it.kenn.demo;

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;

import static org.apache.flink.table.api.Expressions.*;

import org.apache.flink.types.Row;


/**
 * flink table 示例
 */
public class TableDemo {
    //创建表的时候需要注意,表名是区分大小写的!比如下面的KafkaTable写出小写的kafkatable就会报table not found
    private static String kafkaTable = "CREATE TABLE KafkaTable (\n" +
            "  `user` STRING,\n" +
            "  `site` STRING,\n" +
            "  `time` STRING\n" +
            ") WITH (\n" +
            "  'connector' = 'kafka',\n" +
            "  'topic' = 'test-old',\n" +
            "  'properties.bootstrap.servers' = 'localhost:9092',\n" +
            "  'properties.group.id' = 'testGroup',\n" +
            "  'scan.startup.mode' = 'earliest-offset',\n" +
            "  'format' = 'json'\n" +
            ")";
    //注意,为了防止表的字段是关键字,最好把表字段都用反引号引起来
    private static String esTable = "CREATE TABLE esTable (\n" +
            "  `user` STRING,\n" +
            "  `site` STRING,\n" +
            "  `time` STRING,\n" +
            "  PRIMARY KEY (`time`) NOT ENFORCED\n" +
            ") WITH (\n" +
            "  'connector' = 'elasticsearch-7',\n" +
            "  'hosts' = 'http://localhost:9200',\n" +
            "  'index' = 'flink_kafka_users'\n" +
            ")";

    public static void main(String[] args) throws Exception {
        //环境设置
        EnvironmentSettings environmentSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        //创建table environment
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, environmentSettings);
        //注册表
        tableEnv.executeSql(kafkaTable);
        tableEnv.executeSql(esTable);


        //打印表结构
        tableEnv.from("KafkaTable").printSchema();
        //查询表
        Table table = tableEnv.from("KafkaTable").select($("user"), $("site"), $("time"));
        //将表的数据插入到es中
        //这里的sql中样需要注意字段是关键字的可能性
        tableEnv.executeSql("insert into esTable select `user`, site, `time` from KafkaTable");
        //将表的数据转为DataStream并输出到控制台
        tableEnv.toAppendStream(table, Row.class).print("site:");
        env.execute();
    }
}

 

【Flink SQL】Flink SQL 基础概念(一):SQL &amp; Table 运行环境(2) 引入上述依赖之后,小伙伴萌就可以开始使用 Table / SQL API 了。具体案例如下文所示。 阅读详情

相关推荐

Flink的Table以及SQL

Flink的Table以及SQL 1、Flink table以及SQL的基本介绍 Apache Flink 具有两个关系型API:Table API 和SQL,用于统一流和批处理。 Table API 是用于 Scala 和 Java 语言的查询API,允许以非常直观的方式组合关系运算符的查询,例如 select,filter 和 join。 Flink SQL 的支持是基于实现了SQL标准的 Apache Calcite。无论输入是批输入(DataSet)还是流输入(DataStream),任一接口中指定

TU_JCN的博客 1692

Flink之Java Table API的使用

Table API是批处理和流处理的统一的关系型API,查询不需要修改代码就可以采用批输入或流输入来运行,并且是针对Apache Flink专门设计的。

积跬步,至千里。 2467

Flink Table API和SQL的分析及使用(一)

Flink针对标准的流处理和批处理提供了两种关系型API:Table API 和 SQL。Table API 可以直接进行select、filter、join等操作;Flink SQL则是基于Apache Calcite实现标准的SQL,和SQL语言一致,适合大部分开发人员。 Flink Table API和SQL 捆绑在Flink-Table依赖中,如果要使用需要添加一下依赖: 以Flink 1...

s243471087的博客 1493

flink 学习(十五)flink table api

目录前言1、引入依赖2、基于流创建表3、表转换成流4、Table API5、SQL6、tableEnv 创建表7、sql 创建表8、explain 前言 flink 提供了 Table API 和 SQL的方式,可以通过sql来操作DataStream。

码易的博客 3474

Flink SQL - 1.Table API && Sql 入门 Demo

Flink Table API 与 Sql 简易入门 Demo 使用与分析。

BITDDD小栈 1309

大数据Flink(三十):Flink ​​​​​​​Table API & SQL 介绍

Flink的Table模块包括 Table API 和 SQL:Table API 是一种类SQL的API,通过Table API,用户可以像操作表一样操作数据,非常直观和方便SQL作为一种声明式语言,有着标准的语法和规范,用户可以不用关心底层实现即可进行数据的处理,非常易于上手Flink Table API 和 SQL 的实现上有80%左右的代码是公用的。作为一个流批统一的计算引擎,Flink 的 Runtime 层是统一的。

Lansonli(蓝深李)的博客 2858

Flink入门(7)--Table API和Flink SQL

Table API & SQL概述代码入门依赖编码流程 概述 Table API 和 SQL是批流统一的上层处理API,无论是批输入还是流输入,在这两套API中,制定的查询都具有相同的语义,得到相同的结果 代码入门 依赖 flink-table-api-java-bridge:桥接器,主要负责tableAPI 和 DataStream/DataSet API 的连接支持 flink-table-planner-blink: 计划器,table API的最主要部分,提供了运行时环境和生成程序执行计

weixin_38813363的博客 457

flink-table-api-java-bridge_2.11-1.10.0-API文档-中文版.zip

赠送jar包:flink-table-api-java-bridge_2.11-1.10.0.jar; 赠送原API文档:flink-table-api-java-bridge_2.11-1.10.0-javadoc.jar; 赠送源代码:flink-table-api-java-bridge_2.11-1.10.0-sources.jar; 赠送Maven依赖信息文件:flink-table-api-java-bridge_2.11-1.10.0.pom; 包含翻译后的API文档:flink-table-api-java-bridge_2.11-1.10.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-table-api-java-bridge_2.11:1.10.0; 标签:flink、11、apache、java、api、bridge_2、table、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代

【Flink快速入门-11.Flink 中 Table API 和 SQL】

在 Flink1.9 之前,开发人员如果需要处理批计算和流计算,需要同时掌握两种编程接口,对应的业务代码也是两套。一直到 2019 年阿里巴巴 Blink 团队在 Blink 中实现了 Table API 和 SQL,并将 Blink 贡献给 Flink 社区之后,这一问题才得以解决。由于 Table API 和 SQL 出现的时间较晚,所以功能尚不完善,但是已有功能已经可以解决开发人员的很多困难。根据上图我们可以看到,Flink 中最底层的编程接口是,在其的上面一层就是。

pblh123的专栏 1314

flink-table-api-java-bridge_2.12-1.14.3-API文档-中文版.zip

赠送jar包:flink-table-api-java-bridge_2.12-1.14.3.jar 赠送原API文档:flink-table-api-java-bridge_2.12-1.14.3-javadoc.jar 赠送源代码:flink-table-api-java-bridge_2.12-1.14.3-sources.jar 包含翻译后的API文档:flink-table-api-java-bridge_2.12-1.14.3-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache.flink,artifactId:flink-table-api-java-bridge_2.12,version:1.14.3 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

flink-table-api-java-bridge_2.11-1.12.7-API文档-中文版.zip

赠送jar包:flink-table-api-java-bridge_2.11-1.12.7.jar; 赠送原API文档:flink-table-api-java-bridge_2.11-1.12.7-javadoc.jar; 赠送源代码:flink-table-api-java-bridge_2.11-1.12.7-sources.jar; 赠送Maven依赖信息文件:flink-table-api-java-bridge_2.11-1.12.7.pom; 包含翻译后的API文档:flink-table-api-java-bridge_2.11-1.12.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-table-api-java-bridge_2.11:1.12.7; 标签:apache、flink、table、api、java、bridge、中文文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精

【flink番外篇】9、Flink Table API 支持的操作示例(1)-通过Table API和SQL创建表

一、Flink 专栏Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。3、Flik Table API和SQL基础系列 本部分介绍Flink Table Api和SQL的基本用法,比如Table API和SQL创建库、表用法、查询、窗口函数、catalog等等内容。4、Flik

alanchanchn的专栏 6万+

flink-table-api-java-bridge_2.11-1.13.2-API文档-中英对照版.zip

赠送jar包:flink-table-api-java-bridge_2.11-1.13.2.jar; 赠送原API文档:flink-table-api-java-bridge_2.11-1.13.2-javadoc.jar; 赠送源代码:flink-table-api-java-bridge_2.11-1.13.2-sources.jar; 赠送Maven依赖信息文件:flink-table-api-java-bridge_2.11-1.13.2.pom; 包含翻译后的API文档:flink-table-api-java-bridge_2.11-1.13.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.flink:flink-table-api-java-bridge_2.11:1.13.2; 标签:apache、flink、table、api、java、bridge、中英对照文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不

Flink实战(六) - Table API & SQL编程

1 意义 1.1 分层的 APIs & 抽象层次 Flink提供三层API。 每个API在简洁性和表达性之间提供不同的权衡,并针对不同的用例。 而且Flink提供不同级别的抽象来开发流/批处理应用程序 最低级抽象只提供有状态流。它通过Process Function嵌入到DataStream API中。它允许用户自由处理来自一个或多个流的事件,并使用一致的容错状态。此外,用户可以...

JavaEdge全是干货的技术号 5375

AUTOSAR网络管理配置详解:Vector DaVinci工具全面讲解

手把手带你用Vector DaVinci完成AUTOSAR网络管理模块的配置,涵盖NmChannel、NmPdu、重复帧抑制等关键参数设置,深入解析CAN总线上的NM报文调度与唤醒机制,助你扎实掌握AUTOSAR网络管理核心实践。

weixin_42504649的博客 168

芯片设计新手必看:5分钟搞懂工艺角(Process Corner)到底是什么,为啥仿真总要用它?

本文详细解析了芯片设计中的工艺角(Process Corner)概念及其在仿真中的重要性。通过类比马拉松运动员的性能差异,解释了晶体管制造过程中的天然波动,并介绍了TT/FF/SS等工艺角代码的含义。文章还探讨了为何需要跑全工艺角仿真,以及现代芯片验证的完整流程,包括PVT矩阵和多模式分析(MMMC),帮助芯片设计新手快速掌握这一关键概念。

weixin_28713947的博客 244

Flink教程(16)- Flink Table与SQL

文章目录01 引言02 Table API & SQL 介绍2.1 Flink Table模块 2.2 Table API & SQL特点 2.3 Table API& SQL发展历程 03 开发准备3.1 添加依赖3.2 程序结构3.3 API3.3.1 获取环境3.3.3 创建表3.3.4 查询表3.3.5 写出表3.3.6 与DataSet/DataStream集成3.3.6.1 从DataStream和DataSet创建视图3.3.6.2 转换DataStream和DataS

阿甘兄 6605

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1672

【Flink】Table API和SQL API

Flink具有两个关系API - 表API和SQL - 用于统一流和批处理。Table API是Scala和Java的语言集成查询API,允许以非常直观的方式组合来自关系运算符的查询,例如选择,过滤和连接。无论输入是批输入还是流输入,任一接口中指定的查询都具有相同的语义并产生相同的结果。 flink版本:1.8.0 scala版本:2.11.8 1、使用maven引入相关依赖 &l...

hlp4207的博客 1381

手把手教你用Python 3.11和Node.js 18在Windows 11上搭建Dify开发环境

本文提供了一份详尽的Windows 11本地Dify开发环境搭建指南。文章手把手教你完成从Python 3.11、Node.js 18的安装配置,到PostgreSQL、Redis数据库服务的部署,再到前后端服务的启动与联调的全过程,并包含常见问题排查与效能优化建议,旨在帮助开发者构建一个稳定、可调试的Dify本地开发环境。

fire9的博客 645

深度学习在移动开发中的应用:实时姿态估计实战

我们将使用TensorFlow Lite框架,结合专为移动端优化的MoveNet模型,实现一个能够在主流Android设备上达到30FPS的多人姿态跟踪解决方案,并深入探讨其优化技巧和实际应用场景。特别是3D姿态估计、多人长期跟踪等前沿技术的发展,将进一步推动移动端姿态估计技术的应用深度和广度。在下一篇文章中,我们将探讨深度学习在移动端的另一个创新应用:实时手势识别,包括如何在资源受限的环境中实现复杂手势的实时识别,以及这项技术在AR/VR交互、智能家居控制等场景中的应用。第四部分:典型应用场景实现。

Programming Talk 325

快速入门Flink SQL——Table与DataStream互转

前言          上述讲到,成功将一个文件里的内容使用SQL进行了一解析(快速入门Flink SQL —— 介绍及入门)本篇文章主要会跟大家分享如何连接kafka,MySQL,作为输入流和数出的操作。 一、将kafka作为输入流          kafka 的连接器 flink-kafka-connector 中,1.10 版本的已经提供了

大数据记录 8018

2020年大连理工大学《计算机控制技术》期末试卷

2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 ...

无名何许人的博客 646

Flink Table API 和 Flink SQL

1. 简单介绍 1.1 什么是 Table API 和 Flink SQL Flink本身是批流统一的处理框架,所以Table API和SQL,就是批流统一的上层处理API。 目前功能尚未完善,处于活跃的开发阶段。 Table API是一套内嵌在Java和Scala语言中的查询API,它允许我们以非常直观的方式,组合来自一些关系运算符的查询(比如select、filter和join)。而对于Flink SQL,就是直接可以在代码中写SQL,来实现一些查询(Query)操作。Flink的SQL支持,基于实现了

pageniao的博客 933

模型预测控制 (MPC, Model Predictive Control) 算法详解及案例分析

模型预测控制是一种基于模型的控制策略,通过在线求解一个有限时域的优化问题,预测系统的未来行为,并根据预测结果调整控制输入,以实现系统的稳定性和性能优化。

闲人编程的博客 2934

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: Flink process function使用详解
下一篇: Flink Blink Planner和Older Planner的区别
iFence
博客等级 码龄9年 8051粉丝 111原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值