随笔分类 - Flink
1
摘要:Flink Table 和 SQL 内置了很多 SQL 中支持的函数;如果有无法满足的需要,则可以实现用户自定义的函数(UDF)来解决。 5.1 系统内置函数 Flink Table API 和 SQL 为用户提供了一组用于数据转换的内置函数。SQL 中支持的很多函数,Table API 和 SQL
阅读全文
摘要:时间语义,要配合窗口操作才能发挥作用。最主要的用途,当然就是开窗口、根据时间段做计算了。下面我们就来看看 Table API 和 SQL 中,怎么利用时间字段做窗口操作。 在 Table API 和 SQL 中,主要有两种窗口:Group Windows 和 Over Windows 4.1 分组窗
阅读全文
摘要:Table API 和 SQL,本质上还是基于关系型表的操作方式;而关系型表、关系代数,以及SQL 本身,一般是有界的,更适合批处理的场景。这就导致在进行流处理的过程中,理解会稍微复杂一些,需要引入一些特殊概念。 3.1 流处理和关系代数(表,及 SQL)的区别 可以看到,其实关系代数(主要就是指关
阅读全文
摘要:2.1 基本程序结构 Table API 和 SQL 的程序结构,与流式处理的程序结构类似;也可以近似地认为有这么几步:首先创建执行环境,然后定义 source、transform 和 sink。 具体操作流程如下: val tableEnv = ... // 创建表的执行环境 // 创建一张表,用
阅读全文
摘要:第一章 整体介绍1.1 什么是 Table API 和 Flink SQLFlink 本身是批流统一的处理框架,所以 Table API 和 SQL,就是批流统一的上层处理 API。目前功能尚未完善,处于活跃的开发阶段。Table API 是一套内嵌在 Java 和 Scala 语言中的查询 API
阅读全文
摘要:5.1 模块创建和数据准备 同样地,在UserBehaviorAnalysis下新建一个 maven module作为子项目,命名为OrderTimeoutDetect。在这个子模块中,我们同样将会用到flink的CEP库来实现事件流的模式匹配,所以需要在pom文件中引入CEP的相关依赖: <dep
阅读全文
摘要:4.1 模块创建和数据准备 继续在UserBehaviorAnalysis下新建一个 maven module作为子项目,命名为LoginFailDetect。在这个子模块中,我们将会用到flink的CEP库来实现事件流的模式匹配,所以需要在pom文件中引入CEP的相关依赖: <dependency
阅读全文
摘要:3.1 模块创建和数据准备 在UserBehaviorAnalysis下新建一个 maven module作为子项目,命名为NetworkTrafficAnalysis。在这个子模块中,我们同样并没有引入更多的依赖,所以也不需要改动pom文件。 在src/main/目录下,将默认源文件目录java改
阅读全文
摘要:为了统计每个窗口下最热门的商品,我们需要再次按窗口进行分组,这里根据ItemViewCount中的windowEnd进行keyBy()操作。然后使用ProcessFunction实现一个自定义的TopN函数TopNHotItems来计算点击量排名前3名的商品,并将排名结果格式化成字符串,便于后续输出
阅读全文
摘要:首先要实现的是实时热门商品统计,我们将会基于UserBehavior数据集来进行分析。 项目主体用Scala编写,采用IDEA作为开发环境进行项目编写,采用maven作为项目构建和管理工具。首先我们需要搭建项目框架。 2.1 创建Maven项目 2.1.1 项目框架搭建 打开IDEA,创建一个mav
阅读全文
摘要:1.1 电商的用户行为 电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据,进而利用大数据技术进行深入挖掘和分析,得到感兴趣的商业指标并增强对风险的控制。 电商用户行为数据多样,整体可以分为用户行为习惯数据和业务行为数据两大类。用户的行为习惯数据包括了用户的登录方
阅读全文
摘要:Table API是流处理和批处理通用的关系型API,Table API可以基于流输入或者批输入来运行而不需要进行任何修改。Table API是SQL语言的超集并专门为Apache Flink设计的,Table API是Scala 和Java语言集成式的API。与常规SQL语言中将查询指定为字符串不
阅读全文
摘要:1 EventTime的引入 在Flink的流式处理中,绝大部分的业务都会使用eventTime,一般只在eventTime无法使用时,才会被迫使用ProcessingTime或者IngestionTime。 如果要使用EventTime,那么需要引入EventTime的时间属性,引入方式如下所示:
阅读全文
摘要:1 Time 在Flink的流式处理中,会涉及到时间的不同概念,如下图所示: Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink通过时间戳分配器访问事件时间戳。 Ingestion Time:是数据进入Flink的时
阅读全文
摘要:1 Environment getExecutionEnvironment 创建一个执行环境,表示当前执行程序的上下文。 如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,getExecutionEnvironment会根
阅读全文
摘要:1 任务提交流程(yarn模式) Flink任务提交后,Client向HDFS上传Flink的Jar包和配置,之后向Yarn ResourceManager提交任务,ResourceManager分配Container资源并通知对应的NodeManager启动ApplicationMaster,Ap
阅读全文
摘要:1 standalone模式 1.1 安装 解压缩 flink-1.7.0-bin-hadoop27-scala_2.11.tgz 修改 flink/conf/flink-conf.yaml 文件 修改 /conf/slave文件 分发给 另外两台机子 启动 访问http://hadoop1:808
阅读全文
摘要:1、初识Flink Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。 Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林
阅读全文
摘要:在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题。目前比较流行的大数据处理引擎 Apache Spark,基本上已经取代了 MapReduce 成为当前大数据处理的标准。但对实时数据处理来说, Apache Sp
阅读全文
摘要:Spark缺点无论是 Spark Streaming还是 Structured Streaming,Spark流处理的实时性还不够,所以无法用在一些对实时性要求很高的流处理场景中。这是因为 Spark的流处理是基于所谓微批处理( Micro- batch processing)的思想,即它把流处理看
阅读全文
1