当前位置: 首页 > news >正文

白色网站源码深圳互联网网页设计招聘

白色网站源码,深圳互联网网页设计招聘,免费wordpress中文博客主题,学会网站建设的重要性本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇#xff0c;Flink SQL 系列文章由其核心贡献者们分享#xff0c;涵盖基础知识、实践、调优、内部实现等各个方面#xff0c;带你由浅入深地全面了解 Flink SQL。 1. 发展历程 今年的8月22日 Apache…本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇Flink SQL 系列文章由其核心贡献者们分享涵盖基础知识、实践、调优、内部实现等各个方面带你由浅入深地全面了解 Flink SQL。 1. 发展历程 今年的8月22日 Apache Flink 发布了1.9.0 版本(下文简称1.9)在 Flink 1.9 中Table 模块迎来了核心架构的升级引入了阿里巴巴Blink团队贡献的诸多功能本文对Table 模块的架构进行梳理并介绍如何使用 Blink Planner。 Flink 的 Table 模块 包括 Table API 和 SQLTable API 是一种类SQL的API通过Table API用户可以像操作表一样操作数据非常直观和方便SQL作为一种声明式语言有着标准的语法和规范用户可以不用关心底层实现即可进行数据的处理非常易于上手Flink Table API 和 SQL 的实现上有80%左右的代码是公用的。作为一个流批统一的计算引擎Flink 的 Runtime 层是统一的但在 Flink 1.9 之前Flink API 层 一直分为DataStream API 和 DataSet API Table API SQL 位于 DataStream API 和 DataSet API 之上。 Flink 1.8 Table 架构 在 Flink 1.8 架构里如果用户需要同时流计算、批处理的场景下用户需要维护两套业务代码开发人员也要维护两套技术栈非常不方便。 Flink 社区很早就设想过将批数据看作一个有界流数据将批处理看作流计算的一个特例从而实现流批统一阿里巴巴的 Blink 团队在这方面做了大量的工作已经实现了 Table API SQL 层的流批统一。 幸运的是阿里巴巴已经将 Blink 开源回馈给 Flink 社区。为了实现 Flink 整个体系的流批统一在结合 Blink 团队的一些先行经验的基础上Flink 社区的开发人员在多轮讨论后基本敲定了Flink 未来的技术架构。 Flink 未来架构 在Flink 的未来架构中DataSet API将被废除面向用户的API只有 DataStream API 和 Table API SQL在实现层这两个API共享相同的技术栈使用统一的 DAG 数据结构来描述作业使用统一的 StreamOperator 来编写算子逻辑以及使用统一的流式分布式执行引擎实现彻底的流批统一。 这两个API都提供流计算和批处理的功能DataStream API 提供了更底层和更灵活的编程接口用户可以自行描述和编排算子引擎不会做过多的干涉和优化Table API SQL 则提供了直观的Table API、标准的SQL支持引擎会根据用户的意图来进行优化并选择最优的执行计划。 2.Flink 1.9 Table 架构 Blink 的 Table 模块的架构在开源时就已经实现了流批统一向着 Flink 的未来架构迈进了第一步走在了 Flink 社区前面。 因此在 Flink 1.9 合入 Blink Table 代码时为了保证 Flink Table 已有架构和 Blink Table的架构能够并存并朝着 Flink 未来架构演进社区的开发人员围绕FLIP-32(FLIP 即 Flink Improvement Proposals专门记录一些对Flink 做较大修改的提议。FLIP-32是Restructure flink-table for future contributions) 进行了重构和优化从而使得 Flink Table 的新架构具备了流批统一的能力可以说 Flink 1.9 是 Flink 向着流批彻底统一这个未来架构迈出的第一步。 Flink 1.9 Table 架构 在 Flink Table 的新架构中有两个查询处理器Flink Query Processor 和 Blink Query Processor分别对应两个Planner我们称之为 Old Planner 和 Blink Planner。查询处理器是 Planner 的具体实现 通过parser(解析器)、optimizer(优化器)、codegen(代码生成技术)等流程将 Table API SQL作业转换成 Flink Runtime 可识别的 Transformation DAG (由Transformation组成的有向无环图表示作业的转换逻辑)最终由 Flink Runtime 进行作业的调度和执行。 Flink 的查询处理器针对流计算和批处理作业有不同的分支处理流计算作业底层的 API 是 DataStream API 批处理作业底层的 API 是 DataSet API而 Blink 的查询处理器则实现流批作业接口的统一底层的 API 都是Transformation。 3.Flink Planner 与 Blink Planner Flink Table 的新架构实现了查询处理器的插件化社区完整保留原有 Flink Planner (Old Planner)同时又引入了新的 Blink Planner用户可以自行选择使用 Old Planner 还是 Blink Planner。 在模型上Old Planner 没有考虑流计算作业和批处理作业的统一针对流计算作业和批处理作业的实现不尽相同在底层会分别翻译到 DataStream API 和 DataSet API 上。而 Blink Planner 将批数据集看作 bounded DataStream (有界流式数据) 流计算作业和批处理作业最终都会翻译到 Transformation API 上。 在架构上Blink Planner 针对批处理和流计算分别实现了BatchPlanner 和 StreamPlanner 两者共用了大部分代码共享了很多优化逻辑。 Old Planner 针对批处理和流计算的代码实现的是完全独立的两套体系基本没有实现代码和优化逻辑复用。 除了模型和架构上的优点外Blink Planner 在阿里巴巴集团内部的海量业务场景下沉淀了许多实用功能集中在三个方面 Blink Planner 对代码生成机制做了改进、对部分算子进行了优化提供了丰富实用的新功能如维表 join、Top N、MiniBatch、流式去重、聚合场景的数据倾斜优化等新功能。Blink Planner 的优化策略是基于公共子图的优化算法包含了基于成本的优化CBO和基于规则的优化(CRO)两种策略优化更为全面。同时Blink Planner 支持从 catalog 中获取数据源的统计信息这对CBO优化非常重要。Blink Planner 提供了更多的内置函数更标准的 SQL 支持在 Flink 1.9 版本中已经完整支持 TPC-H 对高阶的 TPC-DS 支持也计划在下一个版本实现。 整体看来Blink 查询处理器在架构上更为先进功能上也更为完善。出于稳定性的考虑Flink 1.9 默认依然使用 Flink Planner用户如果需要使用 Blink Planner可以作业中显式指定。 4.如何启用 Blink Planner 在IDE环境里只需要引入两个 Blink Planner 的相关依赖就可以启用 Blink Planner。 dependency groupIdorg.apache.flink/groupId artifactIdflink-table-api-scala-bridge_2.11/artifactId version1.9.0/version /dependencydependency groupIdorg.apache.flink/groupId artifactIdflink-table-planner-blink_2.11/artifactId version1.9.0/version /dependency 对于流计算作业和批处理作业的配置非常类似只需要在 EnvironmentSettings 中设置 StreamingMode 或 BatchMode 即可流计算作业的设置如下 // ********************** // BLINK STREAMING QUERY // ********************** import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.EnvironmentSettings; import org.apache.flink.table.api.java.StreamTableEnvironment;StreamExecutionEnvironment bsEnv StreamExecutionEnvironment.getExecutionEnvironment(); EnvironmentSettings bsSettings EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build(); StreamTableEnvironment bsTableEnv StreamTableEnvironment.create(bsEnv, bsSettings); // or TableEnvironment bsTableEnv TableEnvironment.create(bsSettings);bsTableEnv.sqlUpdate(…); bsTableEnv.execute(); 批处理作业的设置如下 : // ****************** // BLINK BATCH QUERY // ****************** import org.apache.flink.table.api.EnvironmentSettings; import org.apache.flink.table.api.TableEnvironment;EnvironmentSettings bbSettings EnvironmentSettings.newInstance().useBlinkPlanner().inBatchMode().build(); TableEnvironment bbTableEnv TableEnvironment.create(bbSettings); bbTableEnv.sqlUpdate(…) bbTableEnv.execute() 如果作业需要运行在集群环境打包时将 Blink Planner 相关依赖的 scope 设置为 provided表示这些依赖由集群环境提供。这是因为 Flink 在编译打包时 已经将 Blink Planner 相关的依赖打包不需要再次引入避免冲突。 5. 社区长远计划 目前TableAPI SQL 已经成为 Flink API 的一等公民社区也将投入更大的精力在这个模块。在不远的将来待 Blink Planner 稳定之后将会作为默认的 Planner 而 Old Planner 也将会在合适的时候退出历史的舞台。目前社区也在努力赋予 DataStream 批处理的能力从而统一流批技术栈届时 DataSet API 也将退出历史的舞台。 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://wiki.neutronadmin.com/news/428510/

相关文章:

  • 建立网站软件土石方工程网站
  • 网站 用什么数据库代理产品网
  • wordpress安装的模板文件在哪个文件夹seo擦边球网站
  • 分销怎么做网站开发分销为什么都用dw做网站
  • 做目录右内容网站公司管理的三大系统
  • 做网站会遇到什么问题自己做设计图的app
  • 洛阳营销型网站营业执照网上申请
  • 厦门旅游集团网站建设南宁网站排名外包
  • 淘宝推广网站怎么做WordPress发表评论自定义
  • 无极网站免费观看git wordpress
  • 与网站开发相关的书籍江门手机模板建站
  • 成都网站建设 seowordpress-5.6.20
  • 品牌形象网站有哪些移动路由器做网站服务器
  • 宁波网站建设制作哪家好一个品牌的策划方案
  • php第一季网站开发实例教程浙江省建设监理协会官方网站
  • 做百度竞价网站修改影响排名吗特殊符号网站
  • 上海大型网站建设通化网站建设单位
  • 电子商务网站开发常用工具贺卡制作网站
  • 网站进度表营销型网站开发
  • 建设企业网站的重要性广告素材网
  • ui网站开发报价wordpress本站运行
  • 网站个人主页模板网站免费虚拟主机申请
  • 河北建设集团有限公司网站cms系统设计
  • 网站网站建设公司上海花都高端网站建设
  • 南昌网站建设技术托管网站界面友好
  • 网站搜索引擎优化方案范文濮阳市城乡一体化示范区七星医院
  • 外贸建站优化wordpress atom
  • 婚介网站建设方案网站标题堆砌关键词
  • 国贸做网站公司广告案例的网站
  • 学生制作设计个人网站淘宝客导购网站怎么建设