问题导读
1.Flink有哪两个关系API?
2.Table API有那两种语言?
3.Table API和SQL接口彼此集成的好处是什么?
4.DataStream和DataSet API是否是集成的?
5.如何在项目中使用Table API和SQL?
上一篇
彻底明白Flink系统学习19:【Flink1.7】开发之本地与集群执行详解【附例子】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=26587
Apache Flink具有两个关系API - 表API和SQL - 用于统一流和批处理。 Table API是Scala和Java的语言集成查询API,查询允许组合关系运算符,例如selection,过滤和连接。 Flink的SQL支持基于实现SQL标准的Apache Calcite。
Table API和SQL接口彼此集成,以及Flink的DataStream和DataSet API亦是。可以在基于API构建的所有API和库之间切换。例如,可以使用CEP库从DataStream中提取模式,然后使用Table API分析模式,或者可以在预处理上运行Gelly图算法之前使用SQL查询扫描,过滤和聚合批处理表数据。
注意,Table API和SQL很多功能正在开发中。 并非[Table API,SQL]和[stream,batch]输入的每种组合都支持所有操作。
设置
Table API和SQL在flink-table Maven中。 必须将以下依赖项添加到项目中才能使用Table API和SQL:
[mw_shl_code=xml,true]<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table_2.11</artifactId>
<version>1.7.0</version>
</dependency>[/mw_shl_code]
此外,需要为Flink的Scala批处理或流API添加依赖项。 对于批处理查询,需要添加:
[mw_shl_code=xml,true]<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-scala_2.11</artifactId>
<version>1.7.0</version>
</dependency>[/mw_shl_code]
对于流式查询,需要添加:
[mw_shl_code=xml,true]<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-scala_2.11</artifactId>
<version>1.7.0</version>
</dependency>[/mw_shl_code]
注意:由于Apache Calcite中存在阻止用户类加载器被垃圾收集的问题,我们不建议构建包含flink-table依赖关系的fat-jar。 相反,我们建议配置Flink以在系统类加载器中包含flink-table依赖项。 这可以通过将.ink文件夹中的flink-table.jar文件复制到./lib文件夹来完成。 有关详细信息,请参阅这些说明
最新经典文章,欢迎关注公众号
|
|