Flink 1.3 Table and SQL Beta Java API 总结
来源:互联网 发布:java web是做什么的 编辑:程序博客网 时间:2024/06/03 03:46
https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/table_api.html#register-an-external-table-using-a-tablesource
Registering Tables
Register an external Table using a TableSource
目前使用TableSource
读取Table
过程中不支持打水印和设置字段如rowtime.rowtime
。所以如果要使用的话,必须很蛋疼的要先把Table
转为DataStream
,再打水印,最后注册得到Table
。
CsvTableSource
注:1. 返回的是Builder
;2.Builder.build()
返回CsvTableSource
;3.没有streamTableEnvironment.ingest
统一改成和batchTableEnvironment
一样用scan
了。
Builder csvTableBuilder = CsvTableSource .builder() .path("/path/to/your/file.csv") .field("name", Types.STRING()) .field("id", Types.INT()) .field("score", Types.DOUBLE()) .field("comments", Types.STRING()) .fieldDelimiter("#") .lineDelimiter("$") .ignoreFirstLine() .ignoreParseErrors() .commentPrefix("%");tableEnv.registerTableSource("mycsv", csvTableBuilder.build());Table streamTable = tableEnv.scan("mycsv");
SQL
Group Windows
Flink1.3新出来多特性,支持在SQL
中写window
,但官方文档有问题,这里我们来介绍下TUMBLE
的Event Time(rowtime)
的使用。
- 设置EVENT_TIME:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); StreamTableEnvironment tableEnv = TableEnvironment.getTableEnvironment(env);
- 打水印
DataStream<Tuple4<String, String, Double, Long>> messageStream = ... DataStream<Tuple4<String, String, Double,Long>> addWatermarksStream = messageStream.assignTimestampsAndWatermarks( new AscendingTimestampExtractor<Tuple4<String, String, Double, Long>>(){ private static final long serialVersionUID = 604378562837574295L; public long extractAscendingTimestamp(Tuple4<String, String, Double, Long> element) { return element.f3; } });
- 注册table
tableEnv.registerDataStream("message",addWatermarksStream, "key,target,sarvalue,eventtime,rowtime.rowtime");
注:这里最后要多加一个字段,flink sql
内部的保留字rowtime.rowtime
- 写SQL
Table tableResult = tableEnv.sql("select key,TUMBLE_START(rowtime, INTERVAL '5' SECOND),target,sum(sarvalue),max(sarvalue),count(sarvalue) from message GROUP BY key,target,TUMBLE(rowtime, INTERVAL '5' SECOND) ");
注:这里rowtime
看作是一个字段,而不是官网上的函数rowtime()
阅读全文
0 0
- Flink 1.3 Table and SQL Beta Java API 总结
- Flink Table API和SQL实践
- flink table api usage.
- Flink Table & SQL API--动态表与Redo和Undo
- Flink-Table-SQL系列之source
- Flink快速上手之Java API使用
- Flink Java与Scala的Api类型不匹配问题
- Flink sql的实现
- Apache Flink SQL示例
- Flink之CEP-API简介
- Flink关系型API简介
- Flink DataSet API 使用示范
- java.sql.SQLException: Table 'XXX' is marked as crashed and should be repaired异常修复
- Flink之Java 8
- Flink SQL 1.0+ UT Cases
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战009-DataStream与MySql自定义sink和source(Java版)001
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战010-DataStream与MySql自定义sink和source(Java版)002
- 云星数据---Apache Flink实战系列(精品版)】:Flink流处理API详解与编程实战011-DataStream与MySql自定义sink和source(Java版)003
- Shader-数据类型
- 线程学习笔记
- JAVAEE——网上订购子系统的开发(终)
- Android get请求出现java.net.ProtocolException: Unexpected status line
- JPA学习(四):java持久化查询语言JPQL--高级应用及语法
- Flink 1.3 Table and SQL Beta Java API 总结
- Spring集成Memcached三种方式
- java io之文件下载
- layui上传
- 常用宏定义
- Java和MySQL编写的简单手机销售管理系统
- 欢迎使用CSDN-markdown编辑器
- 反射获取bean类的field,多了个change 和序列化号
- java的守护线程与非守护线程