Apache Flink

使用flink Table &Sql api来构建批量和流式应用(3)Flink Sql 使用

孤人 提交于 2020-04-24 09:15:31
从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Streaming process层是底层实现。 其中, flink dataset api使用及原理 介绍了DataSet Api flink DataStream API使用及原理 介绍了DataStream Api flink中的时间戳如何使用?---Watermark使用及原理 介绍了底层实现的基础Watermark flink window实例分析 介绍了window的概念及使用原理 Flink中的状态与容错 介绍了State的概念及checkpoint,savepoint的容错机制 上上篇< 使用flink Table &Sql api来构建批量和流式应用(1)Table的基本概念 >介绍了Table的基本概念及使用方法 上篇< 使用flink Table &Sql api来构建批量和流式应用(2)Table API概述 > 本篇主要看看Flink Sql 有哪些功能及背后的原理 1. sql功能 体现在org.apache.flink.table.api.TableEnvironment,目前flink仅支持select和insert操作 (1) select /** *

【翻译】Flink Table Api & SQL — Hive —— 读写 Hive 表

心不动则不痛 提交于 2020-04-24 09:15:18
本文翻译自官网:Reading & Writing Hive Tables https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/read_write_hive.html Flink Table Api & SQL 翻译目录 使用 HiveCatalog 和Flink的Hive连接器,Flink可以读取和写入Hive数据,以替代Hive的批处理引擎。 确保遵循说明 在您的应用程序中 包括正确的 依赖项 。 从 Hive 读 数据 写数据到 Hive 局限性 从 Hive 读数据 假设Hive在其 default 数据库中 包含一个表,该表 名为people,其中包含几行。 hive> show databases; OK default Time taken: 0.841 seconds, Fetched: 1 row(s) hive > show tables; OK Time taken: 0.087 seconds hive > CREATE TABLE mytable(name string, value double ); OK Time taken: 0.127 seconds hive > SELECT * FROM mytable; OK Tom 4.72 John 8

【翻译】Flink Table Api & SQL — Hive —— Hive 函数

醉酒当歌 提交于 2020-04-24 08:20:35
本文翻译自官网:Hive Functions https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/hive_functions.html Flink Table Api & SQL 翻译目录 用户可以在Flink中使用 Hive 现有的自定义函数。 支持的UDF类型包括: UDF GenericUDF GenericUDTF UDAF GenericUDAFResolver2 根据查询的计划和执行,Hive的UDF和GenericUDF会自动转换为Flink的ScalarFunction,Hive的GenericUDTF会自动转换为Flink的TableFunction,Hive的UDAF和GenericUDAFResolver2会转换为Flink的AggregateFunction。 要使用Hive用户定义的函数,用户必须 设置由Hive Metastore支持的HiveCatalog,其中包含该函数作为会话的当前 catalog 在Flink的classpath中包含该函数的 jar 使用 Blink planner 使用Hive 自定义的函数 假设我们在Hive Metastore中注册了以下Hive函数: /** * Test simple udf. Registered

浅谈Flink

本秂侑毒 提交于 2020-04-22 21:10:37
浅谈Flink Apache Flink 是一个面向数据流处理和批量数据处理的分布式的开源计算框架,能够支持流处理和批处理两种应用类型。有着低延迟、Exactly-once 保证,而批处理需要支持高吞吐、高效处理的特点。 Flink 完全支持流处理,也就是说作为流处理看待时,输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。这与 Spark streaming 不同,Spark streaming 是将流处理视为无限个有界的批处理(microbatch)。 Flink 特点 有状态计算的 Exactly-once 语义。状态是指 flink 能够维护数据在时序上的聚类和聚合,同时它的 checkpoint 机制可以方便快速的做出失败重试; 支持带有事件时间(event time)语义的流处理和窗口处理。事件时间的语义使流计算的结果更加精确,尤其在事件到达无序或者延迟的情况下; 支持高度灵活的窗口(window)操作。支持基于 time、count、session,以及 data-driven 的窗口操作,能很好的对现实环境中的创建的数据进行建模; 轻量的容错处理(fault tolerance)。它使得系统既能保持高的吞吐率又能保证 exactly-once 的一致性。通过轻量的 state snapshots 实现; 支持高吞吐、低延迟

Flink 新场景:OLAP 引擎性能优化及应用案例

时光怂恿深爱的人放手 提交于 2020-04-21 10:33:34
摘要:本文由阿里巴巴技术专家贺小令(晓令)分享,主要介绍 Apache Flink 新场景 OLAP 引擎,内容分为以下四部分: 背景介绍 Flink OLAP 引擎 案例介绍 未来计划 一、背景介绍 1.OLAP 及其分类 OLAP 是一种让用户可以用从不同视角方便快捷的分析数据的计算方法。主流的 OLAP 可以分为3类:多维 OLAP ( Multi-dimensional OLAP )、关系型 OLAP ( Relational OLAP ) 和混合 OLAP ( Hybrid OLAP ) 三大类。 (1)多维 OLAP ( MOLAP ) 传统的 OLAP 分析方式 数据存储在多维数据集中 (2)关系型 OLAP ( ROLAP ) 以关系数据库为核心,以关系型结构进行多维数据的表示 通过 SQL 的 where 条件以呈现传统 OLAP 的切片、切块功能 (3)混合 OLAP ( HOLAP ) 将 MOLAP 和 ROLPA 的优势结合起来,以获得更快的性能 以下将详细介绍每种分类的具体特征。 ■ 多维 OLAP ( MOLAP ) MOLAP 的典型代表是 Kylin 和 Druid。 MOLAP 处理流程 首先,对原始数据做数据预处理;然后,将预处理后的数据存至数据仓库,用户的请求通过 OLAP server 即可查询数据仓库中的数据。 MOLAP 的优点和缺点

aaaaa

独自空忆成欢 提交于 2020-04-21 02:52:00
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Apache Flink窗口的几种实现的类别

旧街凉风 提交于 2020-04-19 03:23:30
“ 无界数据于有界数据是一个比较于模糊的概念,无界与有界之间是可以进行转换的。无界数据流在进行某些计算的时候例如每分钟、每小时、每天等操作时都可以看做是有界数据集。Apache Flink使用Windows方式实现了对于无界数据集到有界数据集的计算。 ” Apache Flink Window 概述 Windows是流式计算中最常用的计算方式之一,通过固定的时长(分钟,小时,天)与固定的长度(X条)的方式把无界的数据集划分到一个固定的空间中进行计算,从而得到该范围内的结果。例如常见的五分钟内登陆用户数,1000条数据内的错误比例等。 Apache Flink在DataStreaming API中内置实现了一些窗口的算子。每个窗口中都包含Window Assigners(窗口分配器)、Triggers(窗口触发器)、Evitor(数据剔除器)、Lateness(时延)等。 完整的来看,Windows Assigners会在属于窗口的第一个元素到来的时候就会创建窗口,当时间、数量或自定义的Trigger触发时候会进行窗口的聚合计算。允许数据的Lateness。 每个窗口都会有一个Trigger与ProcessWindowFunction、ReduceFunction、AggreateFunction或FoldFunction用于实现窗口内容的计算。 Apache Flink 窗口的类别

机器学习及flinkML算法学习

走远了吗. 提交于 2020-04-18 17:48:24
参考文章: 机器学习及flinkML算法学习 基于Flink流处理的动态实时亿级全端用户画像系统 机器学习概念 机器学习算法根据训练数据(training data)使得表示算法行为的数学目标最大化,并以此来进行预测或者做出决定。机器学习分为分类、回归、聚类等,每种都有不一样的目标。 应用场景和处理流程 所有的算法都需要定义每个数据点的特征(feature)集->输入; 正确的定义特征才是机器学习中最有挑战的部分。 大多数算法都是专为数据特征(就是一个代表各个特征值的数字向量)定义的,因此提取特征并转化为特征向量是机器学习过程中重要的一步。 输入数据分为“训练集”和“测试集”,并且只使用前者进行训练,这样就可以用后者来检验模型是否过度拟合了训练数据。 机器学习流水线会训练出多个不同版本的模型,然后分别对其进行评估。Ml提供几个算法进行模型评估。 常见的算法 分类算法 基于已经被标注的其他数据点作为例子来识别一个数据点属于几个类别中的哪一种;比如判断一封邮件是否为垃圾邮件。 垃圾邮件分类做法: HashingTF 文本数据构建词频特征向量 LogisticRegressionWithSGD 使用随机梯度下降法实现逻辑回归。 监督学习 SVM使用通信高效的分布式双坐标上升(CoCoA) 多元线性回归 优化框架 L-BFGS Generalized Linear Models

Flink 从0到1学习—— Flink 不可以连续 Split(分流)?

不打扰是莪最后的温柔 提交于 2020-04-18 06:06:52
前言 今天上午被 Flink 的一个算子困惑了下,具体问题是什么呢? 我有这么个需求:有不同种类型的告警数据流(包含恢复数据),然后我要将这些数据流做一个拆分,拆分后的话,每种告警里面的数据又想将告警数据和恢复数据拆分出来。 结果,这个需求用 Flink 的 Split 运算符出现了问题。 分析 需求如下图所示: 我是期望如上这样将数据流进行拆分的,最后将每种告警和恢复用不同的消息模版做一个渲染,渲染后再通过各种其他的方式(钉钉群 邮件、短信)进行告警通知。 于是我的代码大概的结构如下代码所示: //dataStream 是总的数据流 //split 是拆分后的数据流 SplitStream<AlertEvent> split = dataStream.split(new OutputSelector<AlertEvent>() { @Override public Iterable<String> select(AlertEvent value) { List<String> tags = new ArrayList<>(); switch (value.getType()) { case MIDDLEWARE: tags.add(MIDDLEWARE); break; case HEALTH_CHECK: tags.add(HEALTH_CHECK); break; case

Flink源码分析

血红的双手。 提交于 2020-04-18 04:56:28
本篇文章首发于头条号 Flink源码分析 - 源码构建 ,欢迎关注我的 头条号 和微信公众号“大数据技术和人工智能”(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 CSDN博客 。 本篇介绍一下如何从源码构建Flink,构建Flink源码是学习和研究Flink源码的基础,有助于更好的了解Flink。 环境准备 环境/软件 版本 备注 OS Ubuntu 14.04 LTS Maven 3.0.5 Java 1.8.0_161 Flink 1.8 构建前先确认下Maven和JDK版本,至少需要Maven 3.x和Java 8才能构建。 构建源码 具体步骤如下: #先查看下maven和Java版本 #mvn -v #java -version #下载源码 git clone https://github.com/apache/flink.git #进入源码目录 cd flink #切换到一个稳定分支 git checkout release-1.8 #构建源码 #-DskipTests跳过执行测试程序 #-Dfast跳过测试、QA插件和JavaDocs,加快构建速度 #建议加上-Dfast参数,避免在构建的过程中会遇到各种各样的问题 mvn clean install -DskipTests -Dfast 看到下面输出表示构建成功了。 [INFO] ------