import org.apache.flink.api.common.typeinfo.BasicTypeInfo;
import org.apache.flink.api.java.typeutils.RowTypeInfo;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.api.java.StreamTableEnvironment;
import org.apache.flink.table.descriptors.Json;
import org.apache.flink.table.descriptors.Kafka;
import org.apache.flink.table.descriptors.Schema; /**
* @Auther: Created By gaoxing
* @Date: 2020/4/7 14:07
* @Description: flink-1.10.0版本中几种创建table的方法,即创建数据源的方法
*/
public class CreateView { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); /**
* 第一种方法
* stream to view
*/
DataStreamSource<String> socketLines = env.socketTextStream("localhost", 8888);
tableEnv.createTemporaryView("t_socket", socketLines, "row_data"); /**
* 第二种方法
* 使用flink的connect连接器
* 该方法没有任何的返回值,直接注册一张临时视图出来
*/
tableEnv.connect(
new Kafka()
.version("universal")
.topic("sql-json-test")
.startFromEarliest()
.property("zookeeper.connect", "")
.property("bootstrap.servers", "")
.property("group.id", "flink")
).withFormat(
new Json()
.failOnMissingField(true)
// 如果不指定schema信息,则会自动推断信息,派生出来schema,这个行为默认是生效的,不再需要显式申明
// .schema(new RowTypeInfo(
// new BasicTypeInfo[]{BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO},
// new String[]{"id", "name"}
// ))
).withSchema(
new Schema()
.field("id", DataTypes.STRING())
.field("name", DataTypes.STRING())
).inAppendMode()
.createTemporaryTable("kafka_test"); /**
* 第三种方法
* 使用create table的sSQL语句进行创建
*/ tableEnv.sqlUpdate(
"CREATE TABLE t_kafka(" +
" id int," +
" name string" +
" ) WITH (" +
" 'connector.type' = 'kafka'," +
" 'connector.version' = 'universal'," +
" 'connector.topic' = 'sql-json-test', " +
" 'connector.startup-mode' = 'earliest-offset'," +
" 'connector.properties.zookeeper.connect' = ''," +
" 'connector.properties.bootstrap.servers' = ''," +
" 'update-mode' = 'append'," +
" 'format.type' = 'json'," +
" 'format.derive-schema' = 'true'," +
" 'format.fail-on-missing-field' = 'true'"
); env.execute("CreateTable"); }
}

flink创建视图的几种方式的更多相关文章

  1. 创建控制器的3种方式、深入了解view的创建和加载顺序

    转载自:http://blog.csdn.net/weisubao/article/details/41012243 (1)创建控制器的3种方式 - (BOOL)application:(UIAppl ...

  2. Java-JUC(六):创建线程的4种方式

    Java创建线程的4种方式: Java使用Thread类代表线程,所有线程对象都必须是Thread类或者其子类的实例.Java可以用以下4种方式来创建线程: 1)继承Thread类创建线程: 2)实现 ...

  3. flink01--------1.flink简介 2.flink安装 3. flink提交任务的2种方式 4. 4flink的快速入门 5.source 6 常用算子(keyBy,max/min,maxBy/minBy,connect,union,split+select)

    1. flink简介 1.1 什么是flink Apache Flink是一个分布式大数据处理引擎,可以对有限数据流(如离线数据)和无限流数据及逆行有状态计算(不太懂).可以部署在各种集群环境,对各种 ...

  4. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  5. 【java并发】传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

  6. js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理

    动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...

  7. 创建TabHost的两种方式的简单分析

    最近做了一个TabHost的界面,在做的过程中发现了一些问题,故和大家分享一下. 首先我的界面如下: 目前就我所知,创建TabHost有两种方式,第一种是继承TabActivity类,然后用getTa ...

  8. Java创建线程的第二种方式:实现runable接口

    /*需求:简单的卖票程序多个窗口买票 创建线程的第二种方式:实现runable接口 *//*步骤1.定义类实现Runable接口2.覆盖Runable接口中的run方法    将线程要运行的代码存放在 ...

  9. 创建线程的两种方式比较Thread VS Runnable

    1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 public class MyThread extends Thread{ @Override public vo ...

随机推荐

  1. Java Servlet详解(体系结构+注解配置+生命周期)

    Java Servlet详解(注解配置+生命周期) 什么是Servlet : (Server applet)? 顾名思义:服务端的小程序 Servlet只是一个接口,定义了Java被浏览器访问到(To ...

  2. functools 中的 reduce 函数基本写法

    reduce 返回的往往是一整个可迭代对象的 操作结果 reduce(函数,可迭代对象) 注:lambda x,y 两个参数 2020-05-04

  3. MYSQL的事物四大特性

    MYSQL的事物四大特性(ACID) 1.什么是事物? 事务(Transaction)是并发控制的基本单位.所谓的事务,它是由单独单元的一个或者多个sql语句组成,在这个单元中,每个mysql语句是相 ...

  4. 使用SQL实现数据操作

    SQL和RDBMS的区别:用SQL操作RDBMS 一.数据的完整性 一个汉字占多少长度与编码有关: UTF-8:一个汉字=3个字节 GBK:一个汉字=2个字节 二.数据库基本操作 1. 登录数据库 首 ...

  5. PHP round() 函数

    实例 对浮点数进行四舍五入:高佣联盟 www.cgewang.com <?php echo(round(0.60) . "<br>"); echo(round(0 ...

  6. PHP xpath() 函数

    定义和用法 xpath() 函数运行对 XML 文档的 XPath 查询.高佣联盟 www.cgewang.com 如果成功,该函数返回 SimpleXMLElements 对象的一个数组.如果失败, ...

  7. #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

    #include <iostream> #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) usi ...

  8. 2020牛客暑期多校训练营 第二场 J Just Shuffle 置换 群论

    LINK:Just Shuffle 比较怂群论 因为没怎么学过 置换也是刚理解. 这道题是 已知一个置换\(A\)求一个置换P 两个置换的关键为\(P^k=A\) 且k是一个大质数. 做法是李指导教我 ...

  9. C/C++编程笔记:流行的数字游戏【2048】,C语言400行源代码分享

    游戏介绍 你玩过2048吗?2048是一款流行于各大网页和手机的数字游戏,手机安卓版推出的是<挑战2048>,之后的版本中还加入了双人对战的游戏模式,更加受到玩家的热捧. 2048的游戏规 ...

  10. sqlzoo刷题 SELECT from Nobel Tutorial

    SELECT from Nobel Tutorial 1.Change the query shown so that it displays Nobel prizes for 1950. SELEC ...