分享

彻底明白Flink系统学习20:【Flink1.7】Table API 和SQL概述

pig2 2019-1-9 16:22:38 发表于 连载型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 8781
问题导读

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文件夹来完成。 有关详细信息,请参阅这些说明

最新经典文章,欢迎关注公众号





已有(4)人评论

跳转到指定楼层
huangrong 发表于 2019-5-13 15:18:25
如果使用flink1.8、scala2.11版本的话,maven依赖为:
<!-- Table API所需依赖 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <!-- JAVA -->
        <!--<dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>-->
        <!-- Scala -->
        <!-- 应先导入:flink-streaming-scala_2.11 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>
回复

使用道具 举报

huangrong 发表于 2019-5-13 15:20:07
<flink.version>1.8.0</flink.version>
<scala.binary.version>2.11</scala.binary.version>
回复

使用道具 举报

若无梦何远方 发表于 2019-9-7 09:04:34
长见识了 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条