Apache Flink

flink + redis sink

隐身守侯 提交于 2020-11-08 13:29:32
1)MyRedisAppendSink /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed

Flink从入门到真香(6、Flink实现UDF函数-实现更细粒度的控制流)

守給你的承諾、 提交于 2020-11-08 12:54:47
Flink提供了各种数据的转换操作,但实际业务过程中有很多业务上需要处理的数据结构、规则等等,需要自己写自己的业务代码,这时候就用到的flink提供的函数类(Function Class) Flink暴露了所有udf函数的接口(实现方式为接口或者抽象类),例如MapFunction,FilterFunction,ProcessFunction等。 一个小栗子,要筛选数据中以sensor3为开头的数据 还是在com.mafei.apitest新建一个scala Object UDFTest1 其他代码跟之前一样,读取文件做些简单处理,这里增加了一个自定义的函数类MyFilterFunction,在使用时,只需要在逻辑处增加.filter方法即可, package com.mafei.apitest import org.apache.flink.api.common.functions.{FilterFunction, ReduceFunction, RichFilterFunction} import org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, createTypeInformation} //获取传感器数据 case class SensorReadingTest1(id: String

Flink 最锋利的武器:Flink SQL 入门和实战

馋奶兔 提交于 2020-11-08 12:27:11
一、Flink SQL 背景 Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言。 自 2015 年开始,阿里巴巴开始调研开源流计算引擎,最终决定基于 Flink 打造新一代计算引擎,针对 Flink 存在的不足进行优化和改进,并且在 2019 年初将最终代码开源,也就是我们熟知的 Blink。Blink 在原来的 Flink 基础上最显著的一个贡献就是 Flink SQL 的实现。 Flink SQL 是面向用户的 API 层,在我们传统的流式计算领域,比如 Storm、Spark Streaming 都会提供一些 Function 或者 Datastream API,用户通过 Java 或 Scala 写业务逻辑,这种方式虽然灵活,但有一些不足,比如具备一定门槛且调优较难,随着版本的不断更新,API 也出现了很多不兼容的地方。 在这个背景下,毫无疑问,SQL 就成了我们最佳选择,之所以选择将 SQL 作为核心 API,是因为其具有几个非常重要的特点: SQL 属于设定式语言,用户只要表达清楚需求即可,不需要了解具体做法; SQL 可优化,内置多种查询优化器,这些查询优化器可为 SQL 翻译出最优执行计划; SQL 易于理解,不同行业和领域的人都懂,学习成本较低; SQL 非常稳定,在数据库 30

[Flink]Flink章3 Flink应用开发 --- Redis Sink

送分小仙女□ 提交于 2020-11-08 12:23:07
Flink提供了专门操作redis的Redis Sink 依赖 <dependency> <groupId>org.apache.bahir</groupId> <artifactId>flink-connector-redis_2.11</artifactId> <version>1.0</version> </dependency> 类 Redis Sink 提供用于向Redis发送数据的接口的类。接收器可以使用三种不同的方法与不同类型的Redis环境进行通信: 类 场景 备注 FlinkJedisPoolConfig 单Redis服务器 适用于本地、测试场景 FlinkJedisClusterConfig Redis集群 FlinkJedisSentinelConfig Redis 哨兵 使用 Redis Sink 核心类是 RedisMappe 是一个接口,使用时我们要编写自己的redis操作类实现这个接口中的三个方法 RedisMapper public interface RedisMapper<T> extends Function, Serializable { /** * 设置使用的redis数据结构类型,和key的名词 * 通过RedisCommand设置数据结构类型 * Returns descriptor which defines data type. *

Flink从入门到真香(11、Sink自定义数据输出-以写入MySQL为例)

五迷三道 提交于 2020-11-08 12:07:21
目标: Flink从txt文件中读取数据,写入到mysql中 环境准备: 如果没有mysql,可以按照下面命令安装一下 wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm yum -y install mysql80-community-release-el7-3.noarch.rpm yum install mysql-community-server -y systemctl restart mariadb 查看mysql默认密码 [root@localhost ~]# grep 'temporary password' /var/log/mysqld.log 2020-11-04T02:05:26.432219Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qCk4b_3iEE;V 修改mysql默认密码 mysql -uroot -p'qCk4b_3iEE;V' mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mafei@20201104'; Query OK, 0 rows affected (0.03

Flink的sink实战之一:初探

陌路散爱 提交于 2020-11-08 10:58:38
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等; 关于sink 下图来自Flink官方,红框中就是sink,可见实时数据从Source处开始,在Transformation阶段完成业务逻辑后在sink结束,因此sink可以用来处理计算结果,例如控制台输出或者保存数据库: 关于《Flink的sink实战》系列文章 本文是《Flink的sink实战》的第一篇,旨在初步了解sink,通过对基本API和addSink方法的分析研究,为后续的编码实战打好基础; 全系列链接 《Flink的sink实战之一:初探》 《Flink的sink实战之二:kafka》 《Flink的sink实战之三:cassandra3》 《Flink的sink实战之四:自定义》 从一段实例代码开始 下面是个简单的flink应用代码,红框中的print方法就是sink操作: 下图是官方给出的sink方式,都是DataStream类的API,直接调用即可实现sink,刚才代码中的print就是其中一个: 接下来看看上图中API的源码,先看print方法,在DataStream.java中,如下,实际上是调用了addSink方法,入参是PrintSinkFunction

[Flink] Flink的waterMark的通俗理解

走远了吗. 提交于 2020-11-06 02:26:03
导读 Flink 为实时计算提供了三种时间,即 事件时间 (event time)、 摄入时间 (ingestion time)和 处理时间 (processing time)。 遇到的问题: 假设在一个5秒的Tumble窗口,有一个EventTime是 11秒的数据,在第16秒时候到来了。图示第11秒的数据,在16秒到来了,如下图:该如何处理迟到数据 什么是Watermark Watermark的关键点: 目的:处理EventTime 窗口计算 本质:时间戳 生成方式:Punctuated和Periodic(常用) 特性:单调递增 Watermark的产生方式 Punctuated 数据流中每一个递增的EventTime都会产生一个Watermark。 Periodic(推荐) 周期性的(一定时间间隔或者达到一定的记录条数)产生一个Watermark。 Watermark解决的问题 上面的问题在于如何将迟来的EventTime 位11的元素正确处理? 当Watermark的时间戳等于Event中携带的EventTime时候,上面场景(Watermark=EventTime)的计算结果如下: 如果想正确处理迟来的数据可以定义Watermark生成策略为 Watermark = EventTime -5s, 如下: WaterMark的例子 设置WaterMark步骤: 1

计算触手可及,信也科技云计算平台上线

懵懂的女人 提交于 2020-11-04 16:28:33
2020年9月14日,由信也科技研发中心孵化的云计算平台Stargate成功上线,经过历时一年半的内部测试实践,多项业务目前已在云计算平台Stargate上平稳运行,容器实例数已达到7000余个,其便利性与稳定性得到了充分的验证。基于Stargate,信也科技还建设了环境增量拉起能力、自动化发布能力等生态系统,大幅提升了交付能力与交付质量。 最近几年,新基建的发展备受关注,并在今年首次被写入《政府工作报告》中。业内普遍认可的是,新基建是指以5G、物联网、人工智能、云计算等新一代信息技术为依托,推动面向数字经济的全面转型,为城市、工业、农业、医疗、金融、交通等方方面面注入全新的活力。 信也科技首席技术官王玉翔表示:“云计算是新技术基础设施,是智能世界冷静的大脑,云让计算触手可及。作为一家科技金融公司,信也科技积极探索和建设新型基础设施,努力实现‘科技,让金融更美好’的使命。此次成功孵化的云计算平台Stargate,可以让90%以上的计算能力随时在云上启动,真正做到让计算触手可及。” 资料显示,信也科技云计算平台Stargate依托于新基建中关于云计算的定位,以国内主流Java技术栈开发,主要支持Java类应用的研发流程,同时支持了Python、Flink等技术栈的研发流程,以达到计算力随时云上启动的效果。目前,信也科技云计算平台Stargate已托管于GitHub

Calcite技术研究

大兔子大兔子 提交于 2020-11-02 05:34:42
原文作者:王长春,来自平安银行零售大数据团队 概述 Apache Calcite是一个基础的软件框架,它提供了查询处理、查询优化以及查询语言支持的能力。很多流行的开源数据处理系统例如Apache Hive,Apache Storm,ApacheFlink,Druid等都采用了它。 下图是采用Apache Calcite的开源数据处理系统,以及Calcite能连接到的数据源。 大多数数据处理系统是使用Calcite来做SQL解析和查询优化。还有部分使用Avatica(Calcite的子项目)来构建自己的JDBC driver。还有部分使用Calcite来重写查询请求以使用物化视图。 最近十几年来,出现了很多专门的数据处理引擎。例如列式存储、流处理引擎、文档搜索引擎等等。这些引擎宣称他们在特殊方面能提供更高“性价比”的性能,并且宣称“one size fits all”范式的时代已经终结了。Spark、Storm、Flink、Elasticsearch、Druid等多种引擎的流行确实说明了这一点。 这些数据处理引擎都面临着一些共同但是难以解决的问题。 一是数据处理引擎都要做查询优化以及提供sql查询语言或者其他DSL查询语言。 二是使用者可能使用了多个专门的数据引擎,例如使用了ES、Spark、Druid.那么使用者很可能会有在异构数据源上支持查询以及查询优化的需求。 Apache

如何基于大数据及AI平台实现业务系统实时化?

二次信任 提交于 2020-11-01 20:34:39
1. 前言 随着互联网“人口红利”的“消耗殆尽”,基于“T+1”或者离线计算的机器学习平台及推荐系统转化率与效果日趋“平淡”。后疫情时代的新社会模式及经济形态必将催生出新的商业模式,在线业务及相关应用场景的流量呈现井喷式发展,常规的离线系统及离线机器学习平台已无法满足业务发展要求。人口红利吃尽之后,基于大数据及AI平台的业务系统在时间维度上的思考将变得至关重要,通过业务系统实时化向时间要价值已经成为主流趋势。基于流式计算引擎的在线机器学习平台将越来越被重视, 通过增量模型的准实时或实时推荐系统更能“因时而异” 充分捕捉目标用户瞬息万变的需求,从而进行精准推荐和变现。实时推荐系统也从最早的电商场景, 扩展到社交场景, 在线教育场景, 游戏场景及更广阔的在线场景。 本文介绍重点介绍基于阿里云大数据及AI产品家族的实时计算Flink及PAI Alink机器学习算法平台,以及该产品组合在实时推荐场景(适用于电商、游戏及在线教育解决方案)、实时评分卡场景(适用于金融、安全及营销风控解决方案)以及异常检测场景(适用于工业领域及其他产业互联网领域)的场景应用。 2. 实时计算引擎及机器学习算法平台介绍 2.1 阿里云实时计算Flink 阿里云实时计算Flink作为Apache Flink创始团队的商业化产品,从极致(较传统微批模式)的实时数据处理维度,为企业大数据处理及业务实时化提供了可能